home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / Macintosh Common Lisp Related / interfaces / AOCE folder / OCEAuthDir.lisp < prev    next >
Encoding:
Text File  |  1994-09-12  |  173.6 KB  |  4,588 lines  |  [TEXT/CCL2]

  1.  
  2. (in-package :TRAPS)             ; ***********************************************************
  3. ; Created: Monday, November 8, 1993 11:46 AM
  4. ;  OCEAuthDir.p
  5. ;  Pascal Interface to the Macintosh Libraries
  6. ;   Copyright Apple Computer, Inc. 1990-1993
  7. ;   All rights reserved
  8. ; ***********************************************************
  9.  
  10. ; $IFC UNDEFINED UsingIncludes
  11. ; $SETC UsingIncludes:= 0
  12. ; $ENDC
  13.  
  14. ; $IFC NOT UsingIncludes
  15.  
  16. ; $ENDC
  17.  
  18. ; $IFC UNDEFINED UsingOCEAuthDir
  19. ; $SETC UsingOCEAuthDir:= 1
  20.  
  21. ; $I+
  22. ; $SETC OCEAuthDirIncludes:= UsingIncludes
  23. ; $SETC UsingIncludes:= 1
  24.  
  25. ; $IFC UNDEFINED UsingAppleTalk
  26.  
  27. (require-interface 'APPLETALK)  ; $I $$Shell(PInterfaces)AppleTalk.p
  28. ; $ENDC
  29.  
  30. ; $IFC UNDEFINED UsingFiles
  31.  
  32. (require-interface 'FILES)      ; $I $$Shell(PInterfaces)Files.p
  33. ; $ENDC
  34.  
  35. ; $IFC UNDEFINED UsingOCE
  36. ; $I OCE.p
  37. ; $ENDC
  38.  
  39. ; $IFC UNDEFINED UsingOSUtils
  40.  
  41. (require-interface 'OSUTILS)    ; $I $$Shell(PInterfaces)OSUtils.p
  42. ; $ENDC
  43.  
  44. ; $IFC UNDEFINED UsingTypes
  45.  
  46. (require-interface 'TYPES)      ; $I $$Shell(PInterfaces)Types.p
  47. ; $ENDC
  48.  
  49. ; $SETC UsingIncludes:= OCEAuthDirIncludes
  50.  
  51. ; ***************************************************************************
  52.  
  53. (defconstant $kRC4KeySizeInBytes 8);  size of an RC4 key 
  54. (defconstant $kRefNumUnknown 0)
  55.  
  56. (defconstant $kEnumDistinguishedNameBit 0)
  57. (defconstant $kEnumAliasBit 1)
  58. (defconstant $kEnumPseudonymBit 2)
  59. (defconstant $kEnumDNodeBit 3)
  60. (defconstant $kEnumInvisibleBit 4)
  61. ;  Values of DirEnumChoices 
  62. (defconstant $kEnumDistinguishedNameMask #X1); 1<<kEnumDistinguishedNameBit
  63. (defconstant $kEnumAliasMask #X2); 1<<kEnumAliasBit
  64. (defconstant $kEnumPseudonymMask #X4); 1<<kEnumPseudonymBit
  65. (defconstant $kEnumDNodeMask #X8); 1<<kEnumDNodeBit
  66. (defconstant $kEnumInvisibleMask #X10); 1<<kEnumInvisibleBit
  67.  
  68. (defconstant $kEnumAllMask (+ #$KENUMDISTINGUISHEDNAMEMASK (+ #$KENUMALIASMASK (+ #$KENUMPSEUDONYMMASK (+ #$KENUMDNODEMASK #$KENUMINVISIBLEMASK)))))
  69.  
  70. (def-mactype :DIRENUMCHOICES (find-mactype :SIGNED-LONG))
  71.  
  72. ;  Values of DirSortOption 
  73. (defconstant $kSortByName 0)
  74. (defconstant $kSortByType 1)
  75.  
  76. ;  Values of DirSortDirection 
  77. (defconstant $kSortForwards 0)
  78. (defconstant $kSortBackwards 1)
  79.  
  80. ;  Values of DirMatchWith 
  81. (defconstant $kMatchAll 0)
  82. (defconstant $kExactMatch 1)
  83. (defconstant $kBeginsWith 2)
  84. (defconstant $kEndingWith 3)
  85. (defconstant $kContaining 4)
  86.  
  87. (def-mactype :DIRMATCHWITH (find-mactype :UNSIGNED-BYTE))
  88.  
  89. (defconstant $kCurrentOCESortVersion 1)
  90.  
  91. ;   Access controls are implemented on three levels:
  92. ;           DNode, Record, and Attribute Type levels
  93. ;     Some access control bits apply to the container itself, and some apply to its contents.
  94. ;     The Directory Toolbox supports six functions.  These calls are:
  95. ;     DSSetDNodeAccessControl : to set Access Controls at the DNode level
  96. ;     DSGetDNodeAccessControl : to get Access Controls at the DNode level
  97. ;     DSSetRecordAccessControl  : to set Access Controls at the record level
  98. ;     DSGetRecordAccessControl  : to get Access Controls at the record level
  99. ;     DSSetAttributeAccessControl : to set Access Privileges at the attribute type level
  100. ;     DSGetAttributeAccessControl : to get Access Privileges at the attribute type level
  101. ;     The GetXXXAccessControl calls will return access control masks for various categories
  102. ;     of users.  Please refer to the access control document for a description of the
  103. ;     categories of users.  In general these are:
  104. ;         ThisRecordOwner         - means the identity of the record itself
  105. ;         Friends                  - means any one of the assigned friends for the record
  106. ;         AuthenticatedInDNode     - means any valid user that is an authenticated entity
  107. ;             in the DNode in which this record is located
  108. ;         AuthenticatedInDirectory - means any valid authenticated directory user
  109. ;         Guest                      - means an unauthenticated user.
  110. ;     Depending on the access control for the user (identity of the user),
  111. ;     a SetXXXAccessControl operation can be performed to set controls for various
  112. ;     categories of users described above.   Bit masks for various permitted access
  113. ;     controls are defined below.
  114. ;     GetXXXAccessControl calls will return access control masks for various categories of
  115. ;     users for this record. In addition they also return the level of access controls
  116. ;     that the user (who is making the GetXXXAccessControl call) has for the DNode,
  117. ;     record, or attribute type.
  118. ;     For records, the access control granted will be minimum of the DNode access
  119. ;     control and record access control masks.  For example, to add an attribute type to a
  120. ;     record, a user must have access control kCreateAttributeTypes at the record and
  121. ;     DNode levels.  Similarly, at the attribute type level, access controls will be the
  122. ;     minimum of the DNode, record, and attribute type access controls.
  123. ;  
  124.  
  125. ;  access categories bit numbers 
  126. (defconstant $kThisRecordOwnerBit 0)
  127. (defconstant $kFriendsBit 1)
  128. (defconstant $kAuthenticatedInDNodeBit 2)
  129. (defconstant $kAuthenticatedInDirectoryBit 3)
  130. (defconstant $kGuestBit 4)
  131. (defconstant $kMeBit 5)
  132.  
  133. ;  Values of CategoryMask 
  134. (defconstant $kThisRecordOwnerMask #X1); 1<<kThisRecordOwnerBit
  135. (defconstant $kFriendsMask #X2) ; 1<<kFriendsBit
  136. (defconstant $kAuthenticatedInDNodeMask #X4); 1<<kAuthenticatedInDNodeBit
  137. (defconstant $kAuthenticatedInDirectoryMask #X8); 1<<kAuthenticatedInDirectoryBit
  138. (defconstant $kGuestMask #X10)  ; 1<<kGuestBit
  139. (defconstant $kMeMask #X20)     ; 1<<kMeBit
  140.  
  141. ;  access privileges bit numbers 
  142. (defconstant $kSeeBit 0)
  143. (defconstant $kAddBit 1)
  144. (defconstant $kDeleteBit 2)
  145. (defconstant $kChangeBit 3)
  146. (defconstant $kRenameBit 4)
  147. (defconstant $kChangePrivsBit 5)
  148. (defconstant $kSeeFoldersBit 6)
  149.  
  150. ;  Values of AccessMask 
  151. (defconstant $kSeeMask #X1)     ; 1<<kSeeBit
  152. (defconstant $kAddMask #X2)     ; 1<<kAddBit
  153. (defconstant $kDeleteMask #X4)  ; 1<<kDeleteBit
  154. (defconstant $kChangeMask #X8)  ; 1<<kChangeBit
  155. (defconstant $kRenameMask #X10) ; 1<<kRenameBit
  156. (defconstant $kChangePrivsMask #X20); 1<<kChangePrivsBit
  157. (defconstant $kSeeFoldersMask #X40); 1<<kSeeFoldersBit
  158.  
  159. (defconstant $kAllPrivs (+ #$KSEEMASK (+ #$KADDMASK (+ #$KDELETEMASK (+ #$KCHANGEMASK (+ #$KRENAMEMASK (+ #$KCHANGEPRIVSMASK #$KSEEFOLDERSMASK)))))))
  160. (defconstant $kNoPrivs 0)
  161.  
  162. ; kSupportsDNodeNumberBit:
  163. ; If this bit is set, a DNode can be referenced using DNodeNumbers.
  164. ; RecordLocationInfo can be specified using DNodeNumber and PathName component can be nil.
  165. ; If this bit is not set, a DNode can be referenced only by PathName to the DNode. In the
  166. ; later case DNodeNumber component inside record location info must be set to zero.
  167. ; kSupportsRecordCreationIDBit:
  168. ; If this bit is set, a record can be referenced by specifying CreationID
  169. ; in most directory manager calls. If this bit is not set recordName and recordType are
  170. ; required in the recordID specification for all directory manager calls.
  171. ; kSupportsAttributeCreationIDBit:
  172. ; If this bit is set, an attribute value can be obtained by specifying it's
  173. ; CreationID in Lookup call staring point and also can be used in operations
  174. ; like DeleteAttributeValue and ChangeAttributeValue an Attribute can be
  175. ; specified by AttributeType and CreationID.
  176. ; Following three bits are for determining the sort order in enumeration.
  177. ; kSupportsWildCardOnlyinEnumerationBit:
  178. ; If this bit is set, directory supports only wild card
  179. ; (i.e. recordName as "=").
  180. ; kSupportsTrailingWildCardOnlyinEnumerationBit:
  181. ; This option is similar to "WildCardOnly",(i.e. recordName as "a=").
  182. ; If this is set, directory supports find capability (e.g. starts with option)
  183. ; kSupportsExactMatchBit:
  184. ; If this bit is set, existence of a record matching exact recordName and recordType
  185. ; specification can be found.
  186. ; The above three bits can be interpreted as:
  187. ; WildCardOnlyinEnumerationBit  TrailingWildCardinEnumeration  ExactMatch   Result
  188. ;  1                             0                              0           Browse Only
  189. ;  0                             1                              0           Find Only
  190. ;  0                             0                              1              Exact Match Only
  191. ;  1                             1                                 0           Browse/Find
  192. ;  0                               1                              1           Find/ExcatMatch
  193. ;  1                             1                              1           Browse/Find/ExactMatch
  194. ; Implicit assumption in all these is, record type can be specified either as wild card or
  195. ; a type list.
  196. ; The Following four bits will indicate sort ordering in enumeration.
  197. ; kSupportsOrderedEnumerationBit:
  198. ; If this bit is set, Enumerated records or in some order possibly in name order.
  199. ; kCanSupportNameOrderBit:
  200. ; If this is set, directory will support sortbyName option in Enumerate.
  201. ; kCanSupportTypeOrderBit:
  202. ; If this bit is set, directory will support sortbyType option in enumearte.
  203. ; kSupportSortBackwardsBit:
  204. ; If this bit is set, directory supports backward sorting.
  205. ; kSupportsEnumerationContinueBit:
  206. ; If this bit is set, directory supports enumeration continue.
  207. ; kSupportsLookupContinueBit:
  208. ; If this bit is set, directory supports lookup continue.
  209. ; kSupportsEnumerateAttributeTypeContinueBit:
  210. ; If this bit is set, directory supports EnumerateAttributeType continue.
  211. ; kSupportsEnumeratePseudonymContinueBit:
  212. ; If this bit is set, directory supports EnumeratePseudonym continue.
  213. ; kSupportsAliasesBit:
  214. ; If this bit is set, directory supports create/delte/enumerate
  215. ; of Alias Records.
  216. ; kSupportPseudonymBit:
  217. ; If this bit is set, directory supports create/delte/enumerate of
  218. ; pseudonyms for a record.
  219. ; kSupportsPartialPathNameBit:
  220. ; If this bit is set, directory nodes can be specified using DNodeNumber of a
  221. ; intermediate DNode and a partial name starting from that DNode to the intended
  222. ; DNode.
  223. ; kSupportsAuthenticationBit:
  224. ; If this bit is set, directory supports authentication manager calls.
  225. ; kSupportsProxiesBit:
  226. ; If this bit is set, directory supports proxy related calls in authentication manager.
  227. ; kSupportsFindRecordBit:
  228. ; If this bit is set, catalog supports find record call.
  229. ; Bits and corresponding masks are as defined below.
  230.  
  231. (defconstant $kSupportsDNodeNumberBit 0)
  232. (defconstant $kSupportsRecordCreationIDBit 1)
  233. (defconstant $kSupportsAttributeCreationIDBit 2)
  234. (defconstant $kSupportsMatchAllBit 3)
  235. (defconstant $kSupportsBeginsWithBit 4)
  236. (defconstant $kSupportsExactMatchBit 5)
  237. (defconstant $kSupportsEndsWithBit 6)
  238. (defconstant $kSupportsContainsBit 7)
  239. (defconstant $kSupportsOrderedEnumerationBit 8)
  240. (defconstant $kCanSupportNameOrderBit 9)
  241. (defconstant $kCanSupportTypeOrderBit 10)
  242. (defconstant $kSupportSortBackwardsBit 11)
  243. (defconstant $kSupportIndexRatioBit 12)
  244. (defconstant $kSupportsEnumerationContinueBit 13)
  245. (defconstant $kSupportsLookupContinueBit 14)
  246. (defconstant $kSupportsEnumerateAttributeTypeContinueBit 15)
  247. (defconstant $kSupportsEnumeratePseudonymContinueBit 16)
  248. (defconstant $kSupportsAliasesBit 17)
  249. (defconstant $kSupportsPseudonymsBit 18)
  250. (defconstant $kSupportsPartialPathNamesBit 19)
  251. (defconstant $kSupportsAuthenticationBit 20)
  252. (defconstant $kSupportsProxiesBit 21)
  253. (defconstant $kSupportsFindRecordBit 22)
  254.  
  255. ;  values of DirGestalt 
  256. (defconstant $kSupportsDNodeNumberMask #X1); 1<<kSupportsDNodeNumberBit
  257. (defconstant $kSupportsRecordCreationIDMask #X2); 1<<kSupportsRecordCreationIDBit
  258. (defconstant $kSupportsAttributeCreationIDMask #X4); 1<<kSupportsAttributeCreationIDBit
  259. (defconstant $kSupportsMatchAllMask #X8); 1<<kSupportsMatchAllBit
  260. (defconstant $kSupportsBeginsWithMask #X10); 1<<kSupportsBeginsWithBit
  261. (defconstant $kSupportsExactMatchMask #X20); 1<<kSupportsExactMatchBit
  262. (defconstant $kSupportsEndsWithMask #X40); 1<<kSupportsEndsWithBit
  263. (defconstant $kSupportsContainsMask #X80); 1<<kSupportsContainsBit
  264. (defconstant $kSupportsOrderedEnumerationMask #X100); 1<<kSupportsOrderedEnumerationBit
  265. (defconstant $kCanSupportNameOrderMask #X200); 1<<kCanSupportNameOrderBit
  266. (defconstant $kCanSupportTypeOrderMask #X400); 1<<kCanSupportTypeOrderBit
  267. (defconstant $kSupportSortBackwardsMask #X800); 1<<kSupportSortBackwardsBit
  268. (defconstant $kSupportIndexRatioMask #X1000); 1<<kSupportIndexRatioBit
  269. (defconstant $kSupportsEnumerationContinueMask #X2000); 1<<kSupportsEnumerationContinueBit
  270. (defconstant $kSupportsLookupContinueMask #X4000); 1<<kSupportsLookupContinueBit
  271. (defconstant $kSupportsEnumerateAttributeTypeContinueMask #X8000); 1<<kSupportsEnumerateAttributeTypeContinueBit
  272. (defconstant $kSupportsEnumeratePseudonymContinueMask #X10000); 1<<kSupportsEnumeratePseudonymContinueBit
  273. (defconstant $kSupportsAliasesMask #X20000); 1<<kSupportsAliasesBit
  274. (defconstant $kSupportsPseudonymsMask #X40000); 1<<kSupportsPseudonymsBit
  275. (defconstant $kSupportsPartialPathNamesMask #X80000); 1<<kSupportsPartialPathNamesBit
  276. (defconstant $kSupportsAuthenticationMask #X100000); 1<<kSupportsAuthenticationBit
  277. (defconstant $kSupportsProxiesMask #X200000); 1<<kSupportsProxiesBit
  278. (defconstant $kSupportsFindRecordMask #X400000); 1<<kSupportsFindRecordBit
  279.  
  280. ;  Values of AuthLocalIdentityOp 
  281.  
  282. (defconstant $kAuthLockLocalIdentityOp 1)
  283. (defconstant $kAuthUnlockLocalIdentityOp 2)
  284. (defconstant $kAuthLocalIdentityNameChangeOp 3)
  285.  
  286. ;  Values of AuthLocalIdentityLockAction 
  287. (defconstant $kAuthLockPending 1)
  288. (defconstant $kAuthLockWillBeDone 2)
  289.  
  290. ;  Values of AuthNotifications 
  291. (defconstant $kNotifyLockBit 0)
  292. (defconstant $kNotifyUnlockBit 1)
  293. (defconstant $kNotifyNameChangeBit 2)
  294. (defconstant $kNotifyLockMask #X1); 1<<kNotifyLockBit
  295. (defconstant $kNotifyUnlockMask #X2); 1<<kNotifyUnlockBit
  296. (defconstant $kNotifyNameChangeMask #X4); 1<<kNotifyNameChangeBit
  297.  
  298. (defconstant $kPersonalDirectoryFileCreator :|kl03|)
  299. (defconstant $kPersonalDirectoryFileType :|pabt|)
  300. (defconstant $kBusinessCardFileType :|bust|)
  301. (defconstant $kDirectoryFileType :|dirt|)
  302. (defconstant $kDNodeFileType :|dnod|)
  303. (defconstant $kDirsRootFileType :|drtt|)
  304. (defconstant $kRecordFileType :|rcrd|)
  305.  
  306. (def-mactype :DIRSORTOPTION (find-mactype :SIGNED-INTEGER))
  307.  
  308. (def-mactype :DIRSORTDIRECTION (find-mactype :SIGNED-INTEGER))
  309.  
  310. (def-mactype :CATEGORYMASK (find-mactype :SIGNED-LONG))
  311.  
  312. (def-mactype :ACCESSMASK (find-mactype :SIGNED-LONG))
  313.  
  314. (def-mactype :DIRGESTALT (find-mactype :SIGNED-LONG))
  315.  
  316. (def-mactype :AUTHLOCALIDENTITYOP (find-mactype :SIGNED-LONG))
  317.  
  318. (def-mactype :AUTHLOCALIDENTITYLOCKACTION (find-mactype :SIGNED-LONG))
  319.  
  320. (def-mactype :AUTHNOTIFICATIONS (find-mactype :SIGNED-LONG))
  321.  
  322. (defrecord DNodeID 
  323.    (dNodeNumber :SIGNED-LONG)   ;  dNodenumber  
  324.    (reserved1 :SIGNED-LONG)
  325.    (name (:POINTER :RSTRING))
  326.    (reserved2 :SIGNED-LONG)
  327.    )
  328.  
  329. (defrecord DirEnumSpec 
  330.    (enumFlag :SIGNED-LONG)
  331.    (indexRatio :SIGNED-INTEGER) ;  Approx Record Position between 1 and 100 If supported, 0 If not supported 
  332.    (:variant 
  333.       ((recordIdentifier :LOCALRECORDID))
  334.       ((dNodeIdentifier :DNODEID))
  335.       ))
  336.  
  337. (defrecord DirMetaInfo 
  338.    (info (:ARRAY :SIGNED-LONG 4))
  339.    )
  340.  
  341. (defrecord SLRV 
  342.    (script :SIGNED-INTEGER)     ;  Script code in which entries are sorted 
  343.    (language :SIGNED-INTEGER)   ;  Language code in which entries are sorted 
  344.    (regionCode :SIGNED-INTEGER) ;  Region code in which entries are sorted 
  345.    (version :SIGNED-INTEGER)    ;  version of oce sorting software 
  346.    )
  347.  
  348. ;  Directory types and operations 
  349.  
  350. (def-mactype :AUTHIDENTITY (find-mactype :SIGNED-LONG));  unique identifier for an identity 
  351. (def-mactype :LOCALIDENTITY (find-mactype :SIGNED-LONG));  Umbrella LocalIdentity 
  352.  
  353. (defrecord DESKey               ;  A DES key is 8 bytes of data 
  354.    (a :SIGNED-LONG)
  355.    (b :SIGNED-LONG)
  356.    )
  357.  
  358. (def-mactype :RC4KEY (find-mactype :ARRAY))
  359.  
  360. (def-mactype :AUTHKEYTYPE (find-mactype :SIGNED-LONG))
  361.  
  362. (defrecord AuthKey              ;  key type followed by its data 
  363.    (keyType :SIGNED-LONG)
  364.    (:variant 
  365.       ((des :DESKEY))
  366.       ((rc4 (:ARRAY :UNSIGNED-BYTE 8)))     ; (:ARRAY :UNSIGNED-BYTE (- #$KRC4KEYSIZEINBYTES 1 -1))
  367.       ))
  368.  
  369. (def-mactype :AUTHKEYPTR (find-mactype :POINTER))
  370.  
  371. ; This header is common to all the parameter blocks.  Clients should not directly
  372. ; touch any of these fields except ioCompletion.  ioCompletion is the
  373. ; completion routine pointer for async calls; it is ignored for sync calls.
  374. ; ioResult is the result code from the call.
  375.  
  376. (defrecord AuthDirParamHeader 
  377.    (qLink :POINTER)
  378.    (reserved1 :SIGNED-LONG)
  379.    (reserved2 :SIGNED-LONG)
  380.    (ioCompletion :POINTER)
  381.    (ioResult :SIGNED-INTEGER)
  382.    (saveA5 :SIGNED-LONG)
  383.    (reqCode :SIGNED-INTEGER)
  384.    (reserved (:ARRAY :SIGNED-LONG 2))
  385.    (serverHint :ADDRBLOCK)
  386.    (dsRefNum :SIGNED-INTEGER)
  387.    (callID :SIGNED-LONG)
  388.    (identity :SIGNED-LONG)
  389.    (gReserved1 :SIGNED-LONG)
  390.    (gReserved2 :SIGNED-LONG)
  391.    (gReserved3 :SIGNED-LONG)
  392.    (clientData :SIGNED-LONG)
  393.    )
  394.  
  395. ; ****************************************************************************
  396. ;         Authentication Manager operations
  397. ; ****************************************************************************
  398. ; kAuthResolveCreationID:
  399. ; userRecord will contain the user information whose creationID has to be
  400. ; returned. A client must make this call when he does not know the creaitionID.
  401. ; The creationID must be set to nil before making the call. The server will attempt
  402. ; to match the recordid's in the data base which match the user name and
  403. ; type in the record.  Depending on number of matchings, following
  404. ; results will be returned.
  405. ; Exactly One Match : CreationID in RecordID and also in buffer (if buffer is given)
  406. ; totalMatches = actualMatches = 1.
  407. ; > 1 Match:
  408. ;     Buffer is Large Enough:
  409. ;     totalMatches = actualMatches
  410. ;     Buffer will contain all the CIDs, kOCEAmbiguousMatches error.
  411. ; > 1 Match:
  412. ;     Buffer is not Large Enough:
  413. ;     totalMatches > actualMatches
  414. ;     Buffer will contain all the CIDs (equal to actualMatches), daMoreDataError error.
  415. ; 0 Matches:
  416. ;  kOCENoSuchRecord error
  417.  
  418. (defrecord AuthResolveCreationIDPB 
  419.    (qLink :POINTER)
  420.    (reserved1 :SIGNED-LONG)
  421.    (reserved2 :SIGNED-LONG)
  422.    (ioCompletion :POINTER)
  423.    (ioResult :SIGNED-INTEGER)
  424.    (saveA5 :SIGNED-LONG)
  425.    (reqCode :SIGNED-INTEGER)
  426.    (reserved (:ARRAY :SIGNED-LONG 2))
  427.    (serverHint :ADDRBLOCK)
  428.    (dsRefNum :SIGNED-INTEGER)
  429.    (callID :SIGNED-LONG)
  430.    (identity :SIGNED-LONG)
  431.    (gReserved1 :SIGNED-LONG)
  432.    (gReserved2 :SIGNED-LONG)
  433.    (gReserved3 :SIGNED-LONG)
  434.    (clientData :SIGNED-LONG)
  435.  
  436.    (userRecord (:POINTER :RECORDID));   --> OCE name(Record) of the user 
  437.    (bufferLength :SIGNED-LONG)  ;   --> Buffer Size to hold duplicate Info 
  438.    (buffer :POINTER)            ;   --> Buffer  to hold duplicate Info 
  439.    (totalMatches :SIGNED-LONG)  ;  <--  Total Number of matching names found 
  440.    (actualMatches :SIGNED-LONG) ;  <--  Number of matches returned in the buffer 
  441.    )
  442.  
  443. ; kAuthBindSpecificIdentity:
  444. ; userRecord will contain the user information whose identity has to be
  445. ; verified. userKey will contain the userKey. An Identity is returned which
  446. ; binds the key and the userRecord. The identity returned can be used in the 'identity'
  447. ; field in the header portion (AuthDirParamHeader) for authenticating the Directory and
  448. ; Authentication manager calls.
  449.  
  450. (defrecord AuthBindSpecificIdentityPB 
  451.    (qLink :POINTER)
  452.    (reserved1 :SIGNED-LONG)
  453.    (reserved2 :SIGNED-LONG)
  454.    (ioCompletion :POINTER)
  455.    (ioResult :SIGNED-INTEGER)
  456.    (saveA5 :SIGNED-LONG)
  457.    (reqCode :SIGNED-INTEGER)
  458.    (reserved (:ARRAY :SIGNED-LONG 2))
  459.    (serverHint :ADDRBLOCK)
  460.    (dsRefNum :SIGNED-INTEGER)
  461.    (callID :SIGNED-LONG)
  462.    (identity :SIGNED-LONG)
  463.    (gReserved1 :SIGNED-LONG)
  464.    (gReserved2 :SIGNED-LONG)
  465.    (gReserved3 :SIGNED-LONG)
  466.    (clientData :SIGNED-LONG)
  467.  
  468.    (userIdentity :SIGNED-LONG)  ;  <--  binding identity 
  469.    (userRecord (:POINTER :RECORDID));   --> OCE name(Record) of the user 
  470.    (userKey (:POINTER :AUTHKEY));   --> OCE Key for the user 
  471.    )
  472.  
  473. ; kAuthUnbindSpecificIdentity:
  474. ; This call will unbind the userRecord and key which were bind earlier.
  475.  
  476. (defrecord AuthUnbindSpecificIdentityPB 
  477.    (qLink :POINTER)
  478.    (reserved1 :SIGNED-LONG)
  479.    (reserved2 :SIGNED-LONG)
  480.    (ioCompletion :POINTER)
  481.    (ioResult :SIGNED-INTEGER)
  482.    (saveA5 :SIGNED-LONG)
  483.    (reqCode :SIGNED-INTEGER)
  484.    (reserved (:ARRAY :SIGNED-LONG 2))
  485.    (serverHint :ADDRBLOCK)
  486.    (dsRefNum :SIGNED-INTEGER)
  487.    (callID :SIGNED-LONG)
  488.    (identity :SIGNED-LONG)
  489.    (gReserved1 :SIGNED-LONG)
  490.    (gReserved2 :SIGNED-LONG)
  491.    (gReserved3 :SIGNED-LONG)
  492.    (clientData :SIGNED-LONG)
  493.  
  494.    (userIdentity :SIGNED-LONG)  ;   --> identity to be deleted 
  495.    )
  496.  
  497. ; kAuthGetSpecificIdentityInfo:
  498. ; This call will return the userRecord for the given identity. Note: key is not
  499. ; returned because this would compromise security.
  500.  
  501. (defrecord AuthGetSpecificIdentityInfoPB 
  502.    (qLink :POINTER)
  503.    (reserved1 :SIGNED-LONG)
  504.    (reserved2 :SIGNED-LONG)
  505.    (ioCompletion :POINTER)
  506.    (ioResult :SIGNED-INTEGER)
  507.    (saveA5 :SIGNED-LONG)
  508.    (reqCode :SIGNED-INTEGER)
  509.    (reserved (:ARRAY :SIGNED-LONG 2))
  510.    (serverHint :ADDRBLOCK)
  511.    (dsRefNum :SIGNED-INTEGER)
  512.    (callID :SIGNED-LONG)
  513.    (identity :SIGNED-LONG)
  514.    (gReserved1 :SIGNED-LONG)
  515.    (gReserved2 :SIGNED-LONG)
  516.    (gReserved3 :SIGNED-LONG)
  517.    (clientData :SIGNED-LONG)
  518.  
  519.    (userIdentity :SIGNED-LONG)  ;   --> identity of initiator 
  520.    (userRecord (:POINTER :RECORDID));  <--  OCE name(Record) of the user 
  521.    )
  522.  
  523. ; kAuthAddKey:
  524. ; userRecord will contain the user information whose identity has to be
  525. ; created. userKey will point to the key to be created. password points to
  526. ; an RString containing the password used to generate the key.
  527.  
  528. (defrecord AuthAddKeyPB 
  529.    (qLink :POINTER)
  530.    (reserved1 :SIGNED-LONG)
  531.    (reserved2 :SIGNED-LONG)
  532.    (ioCompletion :POINTER)
  533.    (ioResult :SIGNED-INTEGER)
  534.    (saveA5 :SIGNED-LONG)
  535.    (reqCode :SIGNED-INTEGER)
  536.    (reserved (:ARRAY :SIGNED-LONG 2))
  537.    (serverHint :ADDRBLOCK)
  538.    (dsRefNum :SIGNED-INTEGER)
  539.    (callID :SIGNED-LONG)
  540.    (identity :SIGNED-LONG)
  541.    (gReserved1 :SIGNED-LONG)
  542.    (gReserved2 :SIGNED-LONG)
  543.    (gReserved3 :SIGNED-LONG)
  544.    (clientData :SIGNED-LONG)
  545.  
  546.    (userRecord (:POINTER :RECORDID));   --> OCE name(Record) of the user 
  547.    (userKey (:POINTER :AUTHKEY));  <--  OCE Key for the user 
  548.    (password (:POINTER :RSTRING));   --> Pointer to password STRING 
  549.    )
  550.  
  551. ; kAuthChangeKey:
  552. ; userRecord will contain the user information whose identity has to be
  553. ; created. userKey will point to the key to be created. password points to
  554. ; an RString containing the password used to generate the key.
  555.  
  556. (defrecord AuthChangeKeyPB 
  557.    (qLink :POINTER)
  558.    (reserved1 :SIGNED-LONG)
  559.    (reserved2 :SIGNED-LONG)
  560.    (ioCompletion :POINTER)
  561.    (ioResult :SIGNED-INTEGER)
  562.    (saveA5 :SIGNED-LONG)
  563.    (reqCode :SIGNED-INTEGER)
  564.    (reserved (:ARRAY :SIGNED-LONG 2))
  565.    (serverHint :ADDRBLOCK)
  566.    (dsRefNum :SIGNED-INTEGER)
  567.    (callID :SIGNED-LONG)
  568.    (identity :SIGNED-LONG)
  569.    (gReserved1 :SIGNED-LONG)
  570.    (gReserved2 :SIGNED-LONG)
  571.    (gReserved3 :SIGNED-LONG)
  572.    (clientData :SIGNED-LONG)
  573.  
  574.    (userRecord (:POINTER :RECORDID));   --> OCE name(Record) of the user 
  575.    (userKey (:POINTER :AUTHKEY));  <--  New OCE Key for the user 
  576.    (password (:POINTER :RSTRING));   -->Pointer to the new password STRING 
  577.    )
  578.  
  579. ; AuthDeleteKey:
  580. ; userRecord will contain the user information whose Key has to be deleted.
  581.  
  582. (defrecord AuthDeleteKeyPB 
  583.    (qLink :POINTER)
  584.    (reserved1 :SIGNED-LONG)
  585.    (reserved2 :SIGNED-LONG)
  586.    (ioCompletion :POINTER)
  587.    (ioResult :SIGNED-INTEGER)
  588.    (saveA5 :SIGNED-LONG)
  589.    (reqCode :SIGNED-INTEGER)
  590.    (reserved (:ARRAY :SIGNED-LONG 2))
  591.    (serverHint :ADDRBLOCK)
  592.    (dsRefNum :SIGNED-INTEGER)
  593.    (callID :SIGNED-LONG)
  594.    (identity :SIGNED-LONG)
  595.    (gReserved1 :SIGNED-LONG)
  596.    (gReserved2 :SIGNED-LONG)
  597.    (gReserved3 :SIGNED-LONG)
  598.    (clientData :SIGNED-LONG)
  599.  
  600.    (userRecord (:POINTER :RECORDID));   --> OCE name(Record) of the user 
  601.    )
  602.  
  603. ;  AuthPasswordToKey: Converts an RString into a key. 
  604.  
  605. (defrecord AuthPasswordToKeyPB 
  606.    (qLink :POINTER)
  607.    (reserved1 :SIGNED-LONG)
  608.    (reserved2 :SIGNED-LONG)
  609.    (ioCompletion :POINTER)
  610.    (ioResult :SIGNED-INTEGER)
  611.    (saveA5 :SIGNED-LONG)
  612.    (reqCode :SIGNED-INTEGER)
  613.    (reserved (:ARRAY :SIGNED-LONG 2))
  614.    (serverHint :ADDRBLOCK)
  615.    (dsRefNum :SIGNED-INTEGER)
  616.    (callID :SIGNED-LONG)
  617.    (identity :SIGNED-LONG)
  618.    (gReserved1 :SIGNED-LONG)
  619.    (gReserved2 :SIGNED-LONG)
  620.    (gReserved3 :SIGNED-LONG)
  621.    (clientData :SIGNED-LONG)
  622.  
  623.    (userRecord (:POINTER :RECORDID));   --> OCE name(Record) of the user 
  624.    (key (:POINTER :AUTHKEY))    ;  <--  
  625.    (password (:POINTER :RSTRING));   -->Pointer to the new password STRING 
  626.    )
  627.  
  628. ; kAuthGetCredentials:
  629. ; userRecord will contain the user information whose identity has to be
  630. ; kMailDeletedMask. keyType (e.g. asDESKey) will indicate what type of key has to
  631. ; be deleted.
  632.  
  633. (defrecord AuthGetCredentialsPB 
  634.    (qLink :POINTER)
  635.    (reserved1 :SIGNED-LONG)
  636.    (reserved2 :SIGNED-LONG)
  637.    (ioCompletion :POINTER)
  638.    (ioResult :SIGNED-INTEGER)
  639.    (saveA5 :SIGNED-LONG)
  640.    (reqCode :SIGNED-INTEGER)
  641.    (reserved (:ARRAY :SIGNED-LONG 2))
  642.    (serverHint :ADDRBLOCK)
  643.    (dsRefNum :SIGNED-INTEGER)
  644.    (callID :SIGNED-LONG)
  645.    (identity :SIGNED-LONG)
  646.    (gReserved1 :SIGNED-LONG)
  647.    (gReserved2 :SIGNED-LONG)
  648.    (gReserved3 :SIGNED-LONG)
  649.    (clientData :SIGNED-LONG)
  650.  
  651.    (userIdentity :SIGNED-LONG)  ;   --> identity of initiator 
  652.    (recipient (:POINTER :RECORDID));   --> OCE name of recipient 
  653.    (sessionKey (:POINTER :AUTHKEY));  <--  session key 
  654.    (expiry :SIGNED-LONG)        ;  <--> desired/actual expiry 
  655.    (credentialsLength :SIGNED-LONG);  <--> max/actual credentials size 
  656.    (credentials :POINTER)       ;  <--  buffer where credentials are returned 
  657.    )
  658.  
  659. ; AuthDecryptCredentialsPB:
  660. ; Changes:
  661. ; userKey is changed userIdentity.
  662. ; userRecord is changed to initiatorRecord. User must supply buffer
  663. ; to hold initiatorRecord.
  664. ; agentList has changed to agent. There wil be no call back.
  665. ; User must supply buffer to hold agent Record.
  666. ; An additional BOOLEAN parameter 'hasAgent' is included.
  667. ; Toolbox will set this if an 'Agent' record is found in the
  668. ; credentials. If RecordIDPtr is 'nil', no agent record will
  669. ; be copied. However user can examine 'hasAgent', If true user
  670. ; can reissue this call with apprpriate buffer for getting a recordID.
  671. ; agent has changed to intermediary.  User must supply buffer to hold
  672. ; intermediary Record.  The toolbox will set 'hasIntermediary' if an
  673. ; 'intermediary' record is found in the credentials.
  674.  
  675. (defrecord AuthDecryptCredentialsPB 
  676.    (qLink :POINTER)
  677.    (reserved1 :SIGNED-LONG)
  678.    (reserved2 :SIGNED-LONG)
  679.    (ioCompletion :POINTER)
  680.    (ioResult :SIGNED-INTEGER)
  681.    (saveA5 :SIGNED-LONG)
  682.    (reqCode :SIGNED-INTEGER)
  683.    (reserved (:ARRAY :SIGNED-LONG 2))
  684.    (serverHint :ADDRBLOCK)
  685.    (dsRefNum :SIGNED-INTEGER)
  686.    (callID :SIGNED-LONG)
  687.    (identity :SIGNED-LONG)
  688.    (gReserved1 :SIGNED-LONG)
  689.    (gReserved2 :SIGNED-LONG)
  690.    (gReserved3 :SIGNED-LONG)
  691.    (clientData :SIGNED-LONG)
  692.  
  693.    (userIdentity :SIGNED-LONG)  ;   --> user's Identity 
  694.    (initiatorRecord (:POINTER :RECORDID));  <--  OCE name of the initiator 
  695.    (sessionKey (:POINTER :AUTHKEY));  <--  session key 
  696.    (expiry :SIGNED-LONG)        ;  <--  credentials expiry time 
  697.    (credentialsLength :SIGNED-LONG);   --> actual credentials size 
  698.    (credentials :POINTER)       ;   --> credentials to be decrypted 
  699.    (issueTime :SIGNED-LONG)     ;  <--  credentials expiry time 
  700.    (hasIntermediary :BOOLEAN)   ;  <--  if true, An intermediary Record was found in credentials 
  701.    (intermediary (:POINTER :RECORDID));  <--  recordID of the intermediary 
  702.    )
  703.  
  704. (defrecord AuthMakeChallengePB 
  705.    (qLink :POINTER)
  706.    (reserved1 :SIGNED-LONG)
  707.    (reserved2 :SIGNED-LONG)
  708.    (ioCompletion :POINTER)
  709.    (ioResult :SIGNED-INTEGER)
  710.    (saveA5 :SIGNED-LONG)
  711.    (reqCode :SIGNED-INTEGER)
  712.    (reserved (:ARRAY :SIGNED-LONG 2))
  713.    (serverHint :ADDRBLOCK)
  714.    (dsRefNum :SIGNED-INTEGER)
  715.    (callID :SIGNED-LONG)
  716.    (identity :SIGNED-LONG)
  717.    (gReserved1 :SIGNED-LONG)
  718.    (gReserved2 :SIGNED-LONG)
  719.    (gReserved3 :SIGNED-LONG)
  720.    (clientData :SIGNED-LONG)
  721.  
  722.    (key (:POINTER :AUTHKEY))    ;   --> UnEncrypted SessionKey 
  723.    (challenge :POINTER)         ;  <--  Encrypted Challenge 
  724.    (challengeBufferLength :SIGNED-LONG);   ->length of challenge buffer 
  725.    (challengeLength :SIGNED-LONG);   <-length of Encrypted Challenge 
  726.    )
  727.  
  728. (defrecord AuthMakeReplyPB 
  729.    (qLink :POINTER)
  730.    (reserved1 :SIGNED-LONG)
  731.    (reserved2 :SIGNED-LONG)
  732.    (ioCompletion :POINTER)
  733.    (ioResult :SIGNED-INTEGER)
  734.    (saveA5 :SIGNED-LONG)
  735.    (reqCode :SIGNED-INTEGER)
  736.    (reserved (:ARRAY :SIGNED-LONG 2))
  737.    (serverHint :ADDRBLOCK)
  738.    (dsRefNum :SIGNED-INTEGER)
  739.    (callID :SIGNED-LONG)
  740.    (identity :SIGNED-LONG)
  741.    (gReserved1 :SIGNED-LONG)
  742.    (gReserved2 :SIGNED-LONG)
  743.    (gReserved3 :SIGNED-LONG)
  744.    (clientData :SIGNED-LONG)
  745.  
  746.    (key (:POINTER :AUTHKEY))    ;   --> UnEncrypted SessionKey 
  747.    (challenge :POINTER)         ;   --> Encrypted Challenge 
  748.    (reply :POINTER)             ;  <--  Encrypted Reply 
  749.    (replyBufferLength :SIGNED-LONG);   -->length of challenge buffer 
  750.    (challengeLength :SIGNED-LONG);   --> length of Encrypted Challenge 
  751.    (replyLength :SIGNED-LONG)   ;  <--  length of Encrypted Reply 
  752.    )
  753.  
  754. (defrecord AuthVerifyReplyPB 
  755.    (qLink :POINTER)
  756.    (reserved1 :SIGNED-LONG)
  757.    (reserved2 :SIGNED-LONG)
  758.    (ioCompletion :POINTER)
  759.    (ioResult :SIGNED-INTEGER)
  760.    (saveA5 :SIGNED-LONG)
  761.    (reqCode :SIGNED-INTEGER)
  762.    (reserved (:ARRAY :SIGNED-LONG 2))
  763.    (serverHint :ADDRBLOCK)
  764.    (dsRefNum :SIGNED-INTEGER)
  765.    (callID :SIGNED-LONG)
  766.    (identity :SIGNED-LONG)
  767.    (gReserved1 :SIGNED-LONG)
  768.    (gReserved2 :SIGNED-LONG)
  769.    (gReserved3 :SIGNED-LONG)
  770.    (clientData :SIGNED-LONG)
  771.  
  772.    (key (:POINTER :AUTHKEY))    ;   --> UnEncrypted SessionKey 
  773.    (challenge :POINTER)         ;   --> Encrypted Challenge 
  774.    (reply :POINTER)             ;   --> Encrypted Reply 
  775.    (challengeLength :SIGNED-LONG);   --> length of Encrypted Challenge 
  776.    (replyLength :SIGNED-LONG)   ;   --> length of Encrypted Reply 
  777.    )
  778.  
  779. ; kAuthGetUTCTime:
  780. ; RLI will contain a valid RLI for a cluster server.
  781. ; UTC(GMT) time from one of the cluster server will be returned.
  782. ; An 'offSet' from UTC(GMT) to Mac Local Time will also be returned.
  783. ; If RLI is nil Map DA is used to determine UTC(GMT).
  784. ; Mac Local Time = theUTCTime + theUTCOffset.
  785.  
  786. (defrecord AuthGetUTCTimePB 
  787.    (qLink :POINTER)
  788.    (reserved1 :SIGNED-LONG)
  789.    (reserved2 :SIGNED-LONG)
  790.    (ioCompletion :POINTER)
  791.    (ioResult :SIGNED-INTEGER)
  792.    (saveA5 :SIGNED-LONG)
  793.    (reqCode :SIGNED-INTEGER)
  794.    (reserved (:ARRAY :SIGNED-LONG 2))
  795.    (serverHint :ADDRBLOCK)
  796.    (dsRefNum :SIGNED-INTEGER)
  797.    (callID :SIGNED-LONG)
  798.    (identity :SIGNED-LONG)
  799.    (gReserved1 :SIGNED-LONG)
  800.    (gReserved2 :SIGNED-LONG)
  801.    (gReserved3 :SIGNED-LONG)
  802.    (clientData :SIGNED-LONG)
  803.  
  804.    (pRLI (:POINTER :PACKEDRLI)) ;   --> packed RLI of the Node, whose server's UTC is requested 
  805.    (theUTCTime :SIGNED-LONG)    ;  <--  current UTC(GMT) Time utc seconds since 1/1/1904 
  806.    (theUTCOffset :SIGNED-LONG)  ;  <--  offset from UTC(GMT) seconds EAST of Greenwich 
  807.    )
  808.  
  809. ; kAuthMakeProxy:
  810. ; A user represented bu the 'userIdentity' can make a proxy using this call.
  811. ; 'recipient' is the RecordID of the recipient whom user is requesting proxy.
  812. ; 'intermediary' is the RecordID of the intermediary holding proxy for the user.
  813. ; 'firstValid' is time at which proxy becomes valid.
  814. ; 'expiry' is the time at which proxy must expire.
  815. ; 'proxyLength' will have the length of the buffer pointed by 'proxy' as input.
  816. ; When the call completes, it will hold the actual length of proxy. If the
  817. ; call completes 'kOCEMoreData' error, client can reissue the call with the
  818. ; buffer size as 'proxyLength' returned.
  819. ; expiry is a suggestion, and may be adjusted to be earlier by the ADAP/OCE server.
  820. ; The 'proxy' obtained like this might be used by the 'intermediary' to obtain credentials
  821. ; for the server using TradeProxyForCredentials call.
  822. ; authDataLength and authData are intended for possible future work, but are
  823. ; ignored for now.
  824.  
  825. (defrecord AuthMakeProxyPB 
  826.    (qLink :POINTER)
  827.    (reserved1 :SIGNED-LONG)
  828.    (reserved2 :SIGNED-LONG)
  829.    (ioCompletion :POINTER)
  830.    (ioResult :SIGNED-INTEGER)
  831.    (saveA5 :SIGNED-LONG)
  832.    (reqCode :SIGNED-INTEGER)
  833.    (reserved (:ARRAY :SIGNED-LONG 2))
  834.    (serverHint :ADDRBLOCK)
  835.    (dsRefNum :SIGNED-INTEGER)
  836.    (callID :SIGNED-LONG)
  837.    (identity :SIGNED-LONG)
  838.    (gReserved1 :SIGNED-LONG)
  839.    (gReserved2 :SIGNED-LONG)
  840.    (gReserved3 :SIGNED-LONG)
  841.    (clientData :SIGNED-LONG)
  842.  
  843.    (userIdentity :SIGNED-LONG)  ;   --> identity of principal 
  844.    (recipient (:POINTER :RECORDID));   --> OCE name of recipient 
  845.    (firstValid :SIGNED-LONG)    ;   --> time at which proxy becomes valid 
  846.    (expiry :SIGNED-LONG)        ;   --> time at which proxy expires 
  847.    (authDataLength :SIGNED-LONG);   --> size of authorization data 
  848.    (authData :POINTER)          ;   --> pointer to authorization data 
  849.    (proxyLength :SIGNED-LONG)   ;  <--> max/actual proxy size 
  850.    (proxy :POINTER)             ;  <--> buffer where proxy is returned 
  851.    (intermediary (:POINTER :RECORDID));   --> RecordID of intermediary 
  852.    )
  853.  
  854. ; kAuthTradeProxyForCredentials:
  855. ; Using this call, intermediary holding a 'proxy' for a recipient may obtain credentials
  856. ; for that recipient. 'userIdentity' is the identity for the 'intermediary'.
  857. ; 'recipient' is the RecordID for whom credetials are requested.
  858. ; 'principal' is the RecordID of the user who created the proxy.
  859. ; 'proxyLength' is the length of data pointed by 'proxy.
  860. ; If the call is succesfull, credentials will be returned in the
  861. ; buffer pointed by 'credentials'. 'expiry' is the desired expiry time at input.
  862. ; When call succeds this will have expiry time of credentials.
  863. ; This is very similar to GetCredentials except that we (course: of) need the proxy,
  864. ; but we also need the name of the principal who created the proxy.
  865.  
  866. (defrecord AuthTradeProxyForCredentialsPB 
  867.    (qLink :POINTER)
  868.    (reserved1 :SIGNED-LONG)
  869.    (reserved2 :SIGNED-LONG)
  870.    (ioCompletion :POINTER)
  871.    (ioResult :SIGNED-INTEGER)
  872.    (saveA5 :SIGNED-LONG)
  873.    (reqCode :SIGNED-INTEGER)
  874.    (reserved (:ARRAY :SIGNED-LONG 2))
  875.    (serverHint :ADDRBLOCK)
  876.    (dsRefNum :SIGNED-INTEGER)
  877.    (callID :SIGNED-LONG)
  878.    (identity :SIGNED-LONG)
  879.    (gReserved1 :SIGNED-LONG)
  880.    (gReserved2 :SIGNED-LONG)
  881.    (gReserved3 :SIGNED-LONG)
  882.    (clientData :SIGNED-LONG)
  883.  
  884.    (userIdentity :SIGNED-LONG)  ;   --> identity of intermediary 
  885.    (recipient (:POINTER :RECORDID));   --> OCE name of recipient 
  886.    (sessionKey (:POINTER :AUTHKEY));  <--  session key 
  887.    (expiry :SIGNED-LONG)        ;  <--> desired/actual expiry 
  888.    (credentialsLength :SIGNED-LONG);  <--> max/actual credentials size 
  889.    (credentials :POINTER)       ;  <--> buffer where credentials are returned 
  890.    (proxyLength :SIGNED-LONG)   ;   --> actual proxy size 
  891.    (proxy :POINTER)             ;   --> buffer containing proxy 
  892.    (principal (:POINTER :RECORDID));   --> RecordID of principal 
  893.    )
  894.  
  895. ;  API for Local Identity Interface 
  896. ; AuthGetLocalIdentityPB:
  897. ; A Collaborative application intended to work under the umbrella of LocalIdentity
  898. ; for the OCE toolbox will have to make this call to obtain LocalIdentity.
  899. ; If LocalIdentity has not been created, then application will get
  900. ; 'daLocalIdentityNotExistsErr'. The calling application then guide the user to
  901. ; Login by making SDPPromptForLocalIdentity call.
  902. ; If the LocalIdentity has not been setup, then calling application will
  903. ; receieve 'daOCESetupRequiredErr'. In this case application should put the dialog
  904. ; recommended by the OCE Setup document and guide the user through OCE Setup.
  905. ; If a backGround application or stand alone code requires LocalIdentity, if it gets the
  906. ; OSErr from LocalIdentity and can not call SDPPromptForLocalIdentity, it should it self
  907. ; register with the toolbox using kAuthAddToLocalIdentityQueue call. It will be notified
  908. ; when a LocalIdentity gets created by a foreground application.
  909.  
  910. (defrecord AuthGetLocalIdentityPB 
  911.    (qLink :POINTER)
  912.    (reserved1 :SIGNED-LONG)
  913.    (reserved2 :SIGNED-LONG)
  914.    (ioCompletion :POINTER)
  915.    (ioResult :SIGNED-INTEGER)
  916.    (saveA5 :SIGNED-LONG)
  917.    (reqCode :SIGNED-INTEGER)
  918.    (reserved (:ARRAY :SIGNED-LONG 2))
  919.    (serverHint :ADDRBLOCK)
  920.    (dsRefNum :SIGNED-INTEGER)
  921.    (callID :SIGNED-LONG)
  922.    (identity :SIGNED-LONG)
  923.    (gReserved1 :SIGNED-LONG)
  924.    (gReserved2 :SIGNED-LONG)
  925.    (gReserved3 :SIGNED-LONG)
  926.    (clientData :SIGNED-LONG)
  927.  
  928.    (theLocalIdentity :SIGNED-LONG);  <--  LocalIdentity 
  929.    )
  930.  
  931. ; kAuthUnlockLocalIdentity:
  932. ; The LocalIdentity can be created using this call.
  933. ; The userName and password correspond to the LocalIdentity setup.
  934. ; If the password matches, then collabIdentity will be returned.
  935. ; Typically SDPPromptForLocalIdentity call will make this call.
  936. ; All applications which are registered through kAuthAddToLocalIdentityQueue
  937. ; will be notified.
  938.  
  939. (defrecord AuthUnlockLocalIdentityPB 
  940.    (qLink :POINTER)
  941.    (reserved1 :SIGNED-LONG)
  942.    (reserved2 :SIGNED-LONG)
  943.    (ioCompletion :POINTER)
  944.    (ioResult :SIGNED-INTEGER)
  945.    (saveA5 :SIGNED-LONG)
  946.    (reqCode :SIGNED-INTEGER)
  947.    (reserved (:ARRAY :SIGNED-LONG 2))
  948.    (serverHint :ADDRBLOCK)
  949.    (dsRefNum :SIGNED-INTEGER)
  950.    (callID :SIGNED-LONG)
  951.    (identity :SIGNED-LONG)
  952.    (gReserved1 :SIGNED-LONG)
  953.    (gReserved2 :SIGNED-LONG)
  954.    (gReserved3 :SIGNED-LONG)
  955.    (clientData :SIGNED-LONG)
  956.  
  957.    (theLocalIdentity :SIGNED-LONG);  <--  LocalIdentity 
  958.    (userName (:POINTER :RSTRING));   --> userName 
  959.    (password (:POINTER :RSTRING));   -->user password 
  960.    )
  961.  
  962. ; kAuthLockLocalIdentity:
  963. ; With this call existing LocalIdentity can be locked. If the ASDeleteLocalIdetity
  964. ; call fails with 'kOCEOperationDenied' error, name will contain the application which
  965. ; denied the operation. This name will be supplied by the application
  966. ; when it registered through kAuthAddToLocalIdentityQueue call
  967.  
  968. (defrecord AuthLockLocalIdentityPB 
  969.    (qLink :POINTER)
  970.    (reserved1 :SIGNED-LONG)
  971.    (reserved2 :SIGNED-LONG)
  972.    (ioCompletion :POINTER)
  973.    (ioResult :SIGNED-INTEGER)
  974.    (saveA5 :SIGNED-LONG)
  975.    (reqCode :SIGNED-INTEGER)
  976.    (reserved (:ARRAY :SIGNED-LONG 2))
  977.    (serverHint :ADDRBLOCK)
  978.    (dsRefNum :SIGNED-INTEGER)
  979.    (callID :SIGNED-LONG)
  980.    (identity :SIGNED-LONG)
  981.    (gReserved1 :SIGNED-LONG)
  982.    (gReserved2 :SIGNED-LONG)
  983.    (gReserved3 :SIGNED-LONG)
  984.    (clientData :SIGNED-LONG)
  985.  
  986.    (theLocalIdentity :SIGNED-LONG);   --> LocalIdentity 
  987.    (name (:POINTER (:STRING 255)));  <--  name of the app which denied delete 
  988.    )
  989.  
  990. (def-mactype :NOTIFICATIONPROC (find-mactype :POINTER))
  991. ;  FUNCTION NotificationProc(clientData: LONGINT; callValue: AuthLocalIdentityOp;
  992. ;         actionValue: AuthLocalIdentityLockAction; identity: LocalIdentity): BOOLEAN;
  993.  
  994. ; kAuthAddToLocalIdentityQueue:
  995. ; An application requiring notification of locking/unlocking of the
  996. ; LocalIdentity can install itself using this call. The function provided
  997. ; in 'notifyProc' will be called whenever the requested event happens.
  998. ; When an AuthLockLocalIdentity call is made to the toolbox, the notificationProc
  999. ; will be called with 'kAuthLockPending'. The application may refuse the lock by returning
  1000. ; a 'true' value. If all the registered entries return 'false' value, locking will be done
  1001. ; successfully. Otherwise 'kOCEOperationDenied' error is returned to the caller. The appName
  1002. ; (registered with the notificationProc) of the application which denied locking is also
  1003. ; returned to the caller making the AuthLockIdentity call.
  1004.  
  1005. (defrecord AuthAddToLocalIdentityQueuePB 
  1006.    (qLink :POINTER)
  1007.    (reserved1 :SIGNED-LONG)
  1008.    (reserved2 :SIGNED-LONG)
  1009.    (ioCompletion :POINTER)
  1010.    (ioResult :SIGNED-INTEGER)
  1011.    (saveA5 :SIGNED-LONG)
  1012.    (reqCode :SIGNED-INTEGER)
  1013.    (reserved (:ARRAY :SIGNED-LONG 2))
  1014.    (serverHint :ADDRBLOCK)
  1015.    (dsRefNum :SIGNED-INTEGER)
  1016.    (callID :SIGNED-LONG)
  1017.    (identity :SIGNED-LONG)
  1018.    (gReserved1 :SIGNED-LONG)
  1019.    (gReserved2 :SIGNED-LONG)
  1020.    (gReserved3 :SIGNED-LONG)
  1021.    (clientData :SIGNED-LONG)
  1022.  
  1023.    (notifyProc :POINTER)        ;   --> notification procedure 
  1024.    (notifyFlags :SIGNED-LONG)   ;   --> notifyFlags 
  1025.    (appName (:POINTER (:STRING 255)));   --> name of application to be returned in Delete/Stop 
  1026.    )
  1027.  
  1028. ; kAuthRemoveFromLocalIdentityQueue:
  1029.  
  1030. (defrecord AuthRemoveFromLocalIdentityQueuePB 
  1031.    (qLink :POINTER)
  1032.    (reserved1 :SIGNED-LONG)
  1033.    (reserved2 :SIGNED-LONG)
  1034.    (ioCompletion :POINTER)
  1035.    (ioResult :SIGNED-INTEGER)
  1036.    (saveA5 :SIGNED-LONG)
  1037.    (reqCode :SIGNED-INTEGER)
  1038.    (reserved (:ARRAY :SIGNED-LONG 2))
  1039.    (serverHint :ADDRBLOCK)
  1040.    (dsRefNum :SIGNED-INTEGER)
  1041.    (callID :SIGNED-LONG)
  1042.    (identity :SIGNED-LONG)
  1043.    (gReserved1 :SIGNED-LONG)
  1044.    (gReserved2 :SIGNED-LONG)
  1045.    (gReserved3 :SIGNED-LONG)
  1046.    (clientData :SIGNED-LONG)
  1047.  
  1048.    (nofityProc :POINTER)        ;   --> notification procedure 
  1049.    )
  1050.  
  1051. ; kAuthSetupLocalIdentity:
  1052. ; The LocalIdentity can be Setup using this call.
  1053. ; The userName and password correspond to the LocalIdentity setup.
  1054. ; If a LocalIdentity Setup already exists 'kOCELocalIdentitySetupExists' error
  1055. ; will be returned.
  1056.  
  1057. (defrecord AuthSetupLocalIdentityPB 
  1058.    (qLink :POINTER)
  1059.    (reserved1 :SIGNED-LONG)
  1060.    (reserved2 :SIGNED-LONG)
  1061.    (ioCompletion :POINTER)
  1062.    (ioResult :SIGNED-INTEGER)
  1063.    (saveA5 :SIGNED-LONG)
  1064.    (reqCode :SIGNED-INTEGER)
  1065.    (reserved (:ARRAY :SIGNED-LONG 2))
  1066.    (serverHint :ADDRBLOCK)
  1067.    (dsRefNum :SIGNED-INTEGER)
  1068.    (callID :SIGNED-LONG)
  1069.    (identity :SIGNED-LONG)
  1070.    (gReserved1 :SIGNED-LONG)
  1071.    (gReserved2 :SIGNED-LONG)
  1072.    (gReserved3 :SIGNED-LONG)
  1073.    (clientData :SIGNED-LONG)
  1074.  
  1075.    (aReserved :SIGNED-LONG)     ;   --  
  1076.    (userName (:POINTER :RSTRING));   --> userName 
  1077.    (password (:POINTER :RSTRING));   -->user password 
  1078.    )
  1079.  
  1080. ; kAuthChangeLocalIdentity:
  1081. ; An existing LocalIdentity  Setup can be changed using this call.
  1082. ; The userName and password correspond to the LocalIdentity setup.
  1083. ; If a LocalIdentity Setup does not exists 'kOCELocalIdentityNotSetup' error
  1084. ; will be returned. The user can use  kAuthSetupLocalIdentity call to setit up.
  1085. ; If the 'password' does not correspond to the existing setup, 'kOCELocalAuthenticationFail'
  1086. ; OSErr will be returned. If successful, LocalID will have new name as 'userName' and
  1087. ; password as 'newPassword'.
  1088.  
  1089. (defrecord AuthChangeLocalIdentityPB 
  1090.    (qLink :POINTER)
  1091.    (reserved1 :SIGNED-LONG)
  1092.    (reserved2 :SIGNED-LONG)
  1093.    (ioCompletion :POINTER)
  1094.    (ioResult :SIGNED-INTEGER)
  1095.    (saveA5 :SIGNED-LONG)
  1096.    (reqCode :SIGNED-INTEGER)
  1097.    (reserved (:ARRAY :SIGNED-LONG 2))
  1098.    (serverHint :ADDRBLOCK)
  1099.    (dsRefNum :SIGNED-INTEGER)
  1100.    (callID :SIGNED-LONG)
  1101.    (identity :SIGNED-LONG)
  1102.    (gReserved1 :SIGNED-LONG)
  1103.    (gReserved2 :SIGNED-LONG)
  1104.    (gReserved3 :SIGNED-LONG)
  1105.    (clientData :SIGNED-LONG)
  1106.  
  1107.    (aReserved :SIGNED-LONG)     ;   --  
  1108.    (userName (:POINTER :RSTRING));   --> userName 
  1109.    (password (:POINTER :RSTRING));   --> current password 
  1110.    (newPassword (:POINTER :RSTRING));   --> new password 
  1111.    )
  1112.  
  1113. ; kAuthRemoveLocalIdentity:
  1114. ; An existing LocalIdentity  Setup can be removed using this call.
  1115. ; The userName and password correspond to the LocalIdentity setup.
  1116. ; If a LocalIdentity Setup does not exists 'kOCELocalIdentityNotSetup' error
  1117. ; will be returned.
  1118. ; If the 'password' does not correspond to the existing setup, 'kOCELocalAuthenticationFail'
  1119. ; OSErr will be returned. If successful, LocalIdentity will be removed from the OCE Setup.
  1120. ; This is a very distructive operation, user must be warned enough before actually making
  1121. ; this call.
  1122.  
  1123. (defrecord AuthRemoveLocalIdentityPB 
  1124.    (qLink :POINTER)
  1125.    (reserved1 :SIGNED-LONG)
  1126.    (reserved2 :SIGNED-LONG)
  1127.    (ioCompletion :POINTER)
  1128.    (ioResult :SIGNED-INTEGER)
  1129.    (saveA5 :SIGNED-LONG)
  1130.    (reqCode :SIGNED-INTEGER)
  1131.    (reserved (:ARRAY :SIGNED-LONG 2))
  1132.    (serverHint :ADDRBLOCK)
  1133.    (dsRefNum :SIGNED-INTEGER)
  1134.    (callID :SIGNED-LONG)
  1135.    (identity :SIGNED-LONG)
  1136.    (gReserved1 :SIGNED-LONG)
  1137.    (gReserved2 :SIGNED-LONG)
  1138.    (gReserved3 :SIGNED-LONG)
  1139.    (clientData :SIGNED-LONG)
  1140.  
  1141.    (aReserved :SIGNED-LONG)     ;   --  
  1142.    (userName (:POINTER :RSTRING));   --> userName 
  1143.    (password (:POINTER :RSTRING));   --> current password 
  1144.    )
  1145.  
  1146. ; kOCESetupAddDirectoryInfo:
  1147. ; Using this call identity for a directory can be setup under LocalIdentity umbrella.
  1148. ; ASCreateLocalIdentity should have been done succesfully before making this call.
  1149. ; directoryRecordCID -> is the record creationID obtained when DirAddOCEDirectory or
  1150. ; DirAddDSAMDirectory call was made.
  1151. ; rid-> is the recordID in which the identity for the directory will be established.
  1152. ; password-> the password associated with the rid in the directory world.
  1153.  
  1154. (defrecord OCESetupAddDirectoryInfoPB 
  1155.    (qLink :POINTER)
  1156.    (reserved1 :SIGNED-LONG)
  1157.    (reserved2 :SIGNED-LONG)
  1158.    (ioCompletion :POINTER)
  1159.    (ioResult :SIGNED-INTEGER)
  1160.    (saveA5 :SIGNED-LONG)
  1161.    (reqCode :SIGNED-INTEGER)
  1162.    (reserved (:ARRAY :SIGNED-LONG 2))
  1163.    (serverHint :ADDRBLOCK)
  1164.    (dsRefNum :SIGNED-INTEGER)
  1165.    (callID :SIGNED-LONG)
  1166.    (identity :SIGNED-LONG)
  1167.    (gReserved1 :SIGNED-LONG)
  1168.    (gReserved2 :SIGNED-LONG)
  1169.    (gReserved3 :SIGNED-LONG)
  1170.    (clientData :SIGNED-LONG)
  1171.  
  1172.    (directoryRecordCID :CREATIONID);   --> CreationID for the directory 
  1173.    (recordID (:POINTER :RECORDID));   --> recordID for the identity 
  1174.    (password (:POINTER :RSTRING));   --> password in the directory world 
  1175.    )
  1176.  
  1177. ; kOCESetupChangeDirectoryInfo:
  1178. ; Using this call an existing identity for a directory under LocalIdentity umbrella
  1179. ; can be changed.
  1180. ; ASCreateLocalIdentity should have been done succesfully before making this call.
  1181. ; directoryRecordCID -> is the record creationID obtained when DirAddOCEDirectory or
  1182. ; DirAddDSAMDirectory call was made.
  1183. ; rid-> is the recordID in which the identity for the directory will be established.
  1184. ; password-> the password associated with the rid in the directory world.
  1185. ; newPassword -> the new password for the directory
  1186.  
  1187. (defrecord OCESetupChangeDirectoryInfoPB 
  1188.    (qLink :POINTER)
  1189.    (reserved1 :SIGNED-LONG)
  1190.    (reserved2 :SIGNED-LONG)
  1191.    (ioCompletion :POINTER)
  1192.    (ioResult :SIGNED-INTEGER)
  1193.    (saveA5 :SIGNED-LONG)
  1194.    (reqCode :SIGNED-INTEGER)
  1195.    (reserved (:ARRAY :SIGNED-LONG 2))
  1196.    (serverHint :ADDRBLOCK)
  1197.    (dsRefNum :SIGNED-INTEGER)
  1198.    (callID :SIGNED-LONG)
  1199.    (identity :SIGNED-LONG)
  1200.    (gReserved1 :SIGNED-LONG)
  1201.    (gReserved2 :SIGNED-LONG)
  1202.    (gReserved3 :SIGNED-LONG)
  1203.    (clientData :SIGNED-LONG)
  1204.  
  1205.    (directoryRecordCID :CREATIONID);   --> CreationID for the directory 
  1206.    (recordID (:POINTER :RECORDID));   --> recordID for the identity 
  1207.    (password (:POINTER :RSTRING));   --> password in the directory world 
  1208.    (newPassword (:POINTER :RSTRING));   --> new password in the directory 
  1209.    )
  1210.  
  1211. ; kOCESetupRemoveDirectoryInfo:
  1212. ; Using this call an existing identity for a directory under LocalIdentity umbrella
  1213. ; can be changed.
  1214. ; ASCreateLocalIdentity should have been done succesfully before making this call.
  1215. ; directoryRecordCID -> is the record creationID obtained when DirAddOCEDirectory or
  1216.  
  1217. (defrecord OCESetupRemoveDirectoryInfoPB 
  1218.    (qLink :POINTER)
  1219.    (reserved1 :SIGNED-LONG)
  1220.    (reserved2 :SIGNED-LONG)
  1221.    (ioCompletion :POINTER)
  1222.    (ioResult :SIGNED-INTEGER)
  1223.    (saveA5 :SIGNED-LONG)
  1224.    (reqCode :SIGNED-INTEGER)
  1225.    (reserved (:ARRAY :SIGNED-LONG 2))
  1226.    (serverHint :ADDRBLOCK)
  1227.    (dsRefNum :SIGNED-INTEGER)
  1228.    (callID :SIGNED-LONG)
  1229.    (identity :SIGNED-LONG)
  1230.    (gReserved1 :SIGNED-LONG)
  1231.    (gReserved2 :SIGNED-LONG)
  1232.    (gReserved3 :SIGNED-LONG)
  1233.    (clientData :SIGNED-LONG)
  1234.  
  1235.    (directoryRecordCID :CREATIONID);   --> CreationID for the directory 
  1236.    )
  1237.  
  1238. ; kOCESetupGetDirectoryInfo:
  1239. ; Using this call info on an existing identity for a particular directory under LocalIdentity umbrella
  1240. ; can be obtained.
  1241. ; For the specified directory 'directoryName' and 'discriminator', rid and nativeName will
  1242. ; returned. Caller must provide appropriate buffer to get back rid and nativeName.
  1243. ; 'password' will be returned  for  non-ADAP Directories..
  1244.  
  1245. (defrecord OCESetupGetDirectoryInfoPB 
  1246.    (qLink :POINTER)
  1247.    (reserved1 :SIGNED-LONG)
  1248.    (reserved2 :SIGNED-LONG)
  1249.    (ioCompletion :POINTER)
  1250.    (ioResult :SIGNED-INTEGER)
  1251.    (saveA5 :SIGNED-LONG)
  1252.    (reqCode :SIGNED-INTEGER)
  1253.    (reserved (:ARRAY :SIGNED-LONG 2))
  1254.    (serverHint :ADDRBLOCK)
  1255.    (dsRefNum :SIGNED-INTEGER)
  1256.    (callID :SIGNED-LONG)
  1257.    (identity :SIGNED-LONG)
  1258.    (gReserved1 :SIGNED-LONG)
  1259.    (gReserved2 :SIGNED-LONG)
  1260.    (gReserved3 :SIGNED-LONG)
  1261.    (clientData :SIGNED-LONG)
  1262.  
  1263.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  1264.    (discriminator :DIRDISCRIMINATOR);   --> discriminator for the directory 
  1265.    (recordID (:POINTER :RECORDID));  <--  rid for the directory identity 
  1266.    (nativeName (:POINTER :RSTRING));  <--  user name in the directory world 
  1267.    (password (:POINTER :RSTRING));  <--  password in the directory world 
  1268.  
  1269.    )
  1270.  
  1271. ; ****************************************************************************
  1272. ;          Directory Manager operations
  1273. ; ****************************************************************************
  1274.  
  1275. ;  AddRecord 
  1276.  
  1277. (defrecord DirAddRecordPB 
  1278.    (qLink :POINTER)
  1279.    (reserved1 :SIGNED-LONG)
  1280.    (reserved2 :SIGNED-LONG)
  1281.    (ioCompletion :POINTER)
  1282.    (ioResult :SIGNED-INTEGER)
  1283.    (saveA5 :SIGNED-LONG)
  1284.    (reqCode :SIGNED-INTEGER)
  1285.    (reserved (:ARRAY :SIGNED-LONG 2))
  1286.    (serverHint :ADDRBLOCK)
  1287.    (dsRefNum :SIGNED-INTEGER)
  1288.    (callID :SIGNED-LONG)
  1289.    (identity :SIGNED-LONG)
  1290.    (gReserved1 :SIGNED-LONG)
  1291.    (gReserved2 :SIGNED-LONG)
  1292.    (gReserved3 :SIGNED-LONG)
  1293.    (clientData :SIGNED-LONG)
  1294.  
  1295.    (aRecord (:POINTER :RECORDID));   --> CreationID returned here 
  1296.    (allowDuplicate :BOOLEAN)    ;   --> 
  1297.    )
  1298.  
  1299. ;  DeleteRecord 
  1300.  
  1301. (defrecord DirDeleteRecordPB 
  1302.    (qLink :POINTER)
  1303.    (reserved1 :SIGNED-LONG)
  1304.    (reserved2 :SIGNED-LONG)
  1305.    (ioCompletion :POINTER)
  1306.    (ioResult :SIGNED-INTEGER)
  1307.    (saveA5 :SIGNED-LONG)
  1308.    (reqCode :SIGNED-INTEGER)
  1309.    (reserved (:ARRAY :SIGNED-LONG 2))
  1310.    (serverHint :ADDRBLOCK)
  1311.    (dsRefNum :SIGNED-INTEGER)
  1312.    (callID :SIGNED-LONG)
  1313.    (identity :SIGNED-LONG)
  1314.    (gReserved1 :SIGNED-LONG)
  1315.    (gReserved2 :SIGNED-LONG)
  1316.    (gReserved3 :SIGNED-LONG)
  1317.    (clientData :SIGNED-LONG)
  1318.  
  1319.    (aRecord (:POINTER :RECORDID));   --> 
  1320.    )
  1321.  
  1322. ;  aRecord must contain valid PackedRLI and a CreationID. 
  1323.  
  1324. ; ********************************************************************************
  1325. ; DirEnumerate:
  1326. ; This call can be used to enumerate both DNodes and records under a specified
  1327. ; DNode. A DNode is specified by the PackedRLIPtr 'aRLI'.
  1328. ; startingPoint indicates where to start the enumeration.  Initially,
  1329. ; it should be set to a value of nil.  After some records are enumerated,
  1330. ; the client can issue the call again with the same aRLI and recordName and
  1331. ; typeList. The last received DirEnumSpec in the startingPoint field.  The server
  1332. ; will continue the enumeration from that record on. if user wants to get back the
  1333. ; value specified in the startingRecord also, the BOOLEAN 'includeStartingPoint'
  1334. ; must be set to 'true'. If this is set to 'false', records specified after the
  1335. ; startingPoint record will be returned.
  1336. ; sortBy indicates to the server to return the records that match in name-first
  1337. ; or type-first order.  sortDirection indicates to the server to search in forward
  1338. ; or backward sort order for RecordIDs Specified.
  1339. ; RecordIDS and Enumeration Criteria:
  1340. ; PackedRLIPtr parameter 'aRLI' will be accepted for DNode
  1341. ; specification.
  1342. ; One RStringPtr 'recordName' is provided. User is allowed to
  1343. ; specify a wild card in the name.
  1344. ; 'typeCount' parameter indicate how many types are in the 'typeList'.
  1345. ; 'typeList' parmeter is a pointer to an RString array of size 'typeCount'.
  1346. ; If 'typeCount' is exactly equal to one, a wild card can be specified
  1347. ; for the entity type; otherwise types have to be completely specified.
  1348. ; A nil value for 'startingPoint' is allowed when sortDirection specified
  1349. ; is 'kSortBackwards'. This was not allowed previously.
  1350. ; 'enumFlags' parameter is a bit field. The following bits can be set:
  1351. ;     kEnumDistinguishedNameMask to get back records in the cluster data base.
  1352. ;     kEnumAliasMask to get back record aliases
  1353. ;     kEnumPseudonymMask to get back record pseudonyms
  1354. ;     kEnumDNodeMask to get back any children dNodes for the DNode specified in the
  1355. ;     'aRLI' parameter.
  1356. ;     kEnumAll is combination of all four values and can be used to enumerate
  1357. ;     everything under a specified DNode.
  1358. ; 'requestScriptCode' is input parameter and should be ignored in the Release 1.0
  1359. ; by all directories (including DSAM directories). However clients are advised to
  1360. ; set this to desired valid script code for future compatibility.
  1361. ; 'responseScriptCode' is  output parameter and this will be set when
  1362. ; DirEnumerateGet call completes successfully (includes kOCEMoreData error case).
  1363. ; If the 'responseScriptCode' is one of the defined script codes, it indicates
  1364. ; that entries are sorted in that script code. This value need not be equal to
  1365. ; the 'requsetScriptCode'. If the value returned is smInvalidScript, then the
  1366. ; sort order returned can be determined by the feature flags for that directory.
  1367. ; This may indicate entries may be sorted in some order or not sorted in any
  1368. ; particular order.
  1369. ; The results returned for each element will consist of a DirEnumSpec.
  1370. ; The DirEnumSpec contains 'enumFlag' which indicates the type of entity and a
  1371. ; union which will have either DNodeID or LocalRecordID depending on the value of 'enumFlag'.
  1372. ; The 'enumFlag'  will indicate whether the returned element is a
  1373. ; record(bit: kEnumDistinguishedNameMask) or a alias(bit: kEnumAliasMask) or a
  1374. ; Pseudonym(kEnumPseudonymMask) or a child DNode(bit: kEnumChildMask).  If the 'enumFlag' value
  1375. ; is kEnumChildMask, it indicates the value returned in the union is a DNodeID (i.e. 'dNodeNumber'
  1376. ; is the 'dNodeNumber' of the child dnode(if the directory supports dNodeNumbers, otherwise
  1377. ; this will be set to zero). The name will be the child dnode name. For other values of the
  1378. ; 'enumFlag', the value in the union will be LocalRecordID.
  1379. ; The results will be collected in the 'getBuffer' supplied by the user.
  1380. ; If buffer can not hold all the data returned 'kOCEMoreData' error will be returned.
  1381. ; If user receives 'noErr' or 'kOCEMoreData', buffer will contain valid results. A user
  1382. ; can extract the results in the 'getBuffer' by making DirEnumerateParse' call.
  1383.  
  1384. (defrecord DirEnumerateGetPB 
  1385.    (qLink :POINTER)
  1386.    (reserved1 :SIGNED-LONG)
  1387.    (reserved2 :SIGNED-LONG)
  1388.    (ioCompletion :POINTER)
  1389.    (ioResult :SIGNED-INTEGER)
  1390.    (saveA5 :SIGNED-LONG)
  1391.    (reqCode :SIGNED-INTEGER)
  1392.    (reserved (:ARRAY :SIGNED-LONG 2))
  1393.    (serverHint :ADDRBLOCK)
  1394.    (dsRefNum :SIGNED-INTEGER)
  1395.    (callID :SIGNED-LONG)
  1396.    (identity :SIGNED-LONG)
  1397.    (gReserved1 :SIGNED-LONG)
  1398.    (gReserved2 :SIGNED-LONG)
  1399.    (gReserved3 :SIGNED-LONG)
  1400.    (clientData :SIGNED-LONG)
  1401.  
  1402.    (aRLI (:POINTER :PACKEDRLI)) ;   --> an RLI specifying the cluster to be enumerated 
  1403.    (startingPoint (:POINTER :DIRENUMSPEC));   --> 
  1404.    (sortBy :SIGNED-INTEGER)     ;   --> 
  1405.    (sortDirection :SIGNED-INTEGER);   --> 
  1406.    (dReserved :SIGNED-LONG)     ;   --  
  1407.    (nameMatchString (:POINTER :RSTRING));   --> name from which enumeration should start 
  1408.    (typesList (:HANDLE :RSTRING));   --> list of entity types to be enumerated 
  1409.    (typeCount :SIGNED-LONG)     ;   --> number of types in the list 
  1410.    (enumFlags :SIGNED-LONG)     ;   --> indicates what to enumerate 
  1411.  
  1412. ; ERROR!! Record field INCLUDESTARTINGPOINT declared PACKED BOOLEAN !
  1413.    (includeStartingPoint :BOOLEAN);   --> if true return the record specified in starting point 
  1414.    (padByte :UNSIGNED-BYTE)
  1415.    (matchNameHow :UNSIGNED-BYTE);   --> Matching Criteria for nameMatchString 
  1416.    (matchTypeHow :UNSIGNED-BYTE);   --> Matching Criteria for typeList 
  1417.    (getBuffer :POINTER)         ;   --> 
  1418.    (getBufferSize :SIGNED-LONG) ;   --> 
  1419.    (responseSLRV :SLRV)         ;   <-- response SLRV 
  1420.    )
  1421.  
  1422. ;  The EnumerateRecords call-back function is defined as follows: 
  1423. (def-mactype :FOREACHDIRENUMSPEC (find-mactype :POINTER))
  1424. ;  FUNCTION ForEachDirEnumSpec(
  1425. ;         clientData: LONGINT; enumSpec: DirEnumSpec): BOOLEAN;
  1426.  
  1427. ; EnumerateParse:
  1428. ; After an EnumerateGet call has completed, call EnumerateParse
  1429. ; to parse through the buffer that was filled in EnumerateGet.
  1430. ; 'eachEnumSpec' will be called each time to return to the client a
  1431. ; DirEnumSpec that matches the pattern for enumeration. 'enumFlag' indicates the type
  1432. ; of information returned in the DirEnumSpec
  1433. ; The clientData parameter that you pass in the parameter block will be passed
  1434. ; to 'forEachEnumDSSpecFunc'.  You are free to put anything in clientData - it is intended
  1435. ; to allow you some way to match the call-back to the original call (example: for; you make more then one aysynchronous EnumerateGet calls and you want to
  1436. ; associate returned results in some way).
  1437. ; The client should return FALSE from 'eachEnumSpec' to continue
  1438. ; processing of the EnumerateParse request.  Returning TRUE will
  1439. ; terminate the EnumerateParse request.
  1440. ; For synchronous calls, the call-back routine actually runs as part of the same thread
  1441. ; of execution as the thread that made the EnumerateParse call.  That means that the
  1442. ; same low-memory globals, A5, stack, etc. are in effect during the call-back
  1443. ; that were in effect when the call was made.  Because of this, the call-back
  1444. ; routine has the same restrictions as the caller of EnumerateParse:
  1445. ; if EnumerateParse was not called from interrupt level, then the call-
  1446. ; back routine can allocate memory. For asynchronous calls, call-back routine is
  1447. ; like a ioCompletion except that A5 will be preserved for the application.
  1448.  
  1449. (defrecord DirEnumerateParsePB 
  1450.    (qLink :POINTER)
  1451.    (reserved1 :SIGNED-LONG)
  1452.    (reserved2 :SIGNED-LONG)
  1453.    (ioCompletion :POINTER)
  1454.    (ioResult :SIGNED-INTEGER)
  1455.    (saveA5 :SIGNED-LONG)
  1456.    (reqCode :SIGNED-INTEGER)
  1457.    (reserved (:ARRAY :SIGNED-LONG 2))
  1458.    (serverHint :ADDRBLOCK)
  1459.    (dsRefNum :SIGNED-INTEGER)
  1460.    (callID :SIGNED-LONG)
  1461.    (identity :SIGNED-LONG)
  1462.    (gReserved1 :SIGNED-LONG)
  1463.    (gReserved2 :SIGNED-LONG)
  1464.    (gReserved3 :SIGNED-LONG)
  1465.    (clientData :SIGNED-LONG)
  1466.  
  1467.    (aRLI (:POINTER :PACKEDRLI)) ;   --> an RLI specifying the cluster to be enumerated 
  1468.    (bReserved :SIGNED-LONG)     ;   --  
  1469.    (cReserved :SIGNED-LONG)     ;   --  
  1470.    (eachEnumSpec :POINTER)      ;   --> 
  1471.    (eReserved :SIGNED-LONG)     ;   --  
  1472.    (fReserved :SIGNED-LONG)     ;   --  
  1473.    (gReserved :SIGNED-LONG)     ;   --  
  1474.    (hReserved :SIGNED-LONG)     ;   --  
  1475.    (iReserved :SIGNED-LONG)     ;   --  
  1476.    (getBuffer :POINTER)         ;   --> 
  1477.    (getBufferSize :SIGNED-LONG) ;   --> 
  1478.    (l1Reserved :SIGNED-INTEGER) ;   --  
  1479.    (l2Reserved :SIGNED-INTEGER) ;   --  
  1480.    (l3Reserved :SIGNED-INTEGER) ;   --  
  1481.    (l4Reserved :SIGNED-INTEGER) ;   --  
  1482.    )
  1483.  
  1484. ;  FindRecordGet operates similarly to DirEnumerate except it returns a list
  1485. ;  of records instead of records local to a cluster.
  1486.  
  1487. (defrecord DirFindRecordGetPB 
  1488.    (qLink :POINTER)
  1489.    (reserved1 :SIGNED-LONG)
  1490.    (reserved2 :SIGNED-LONG)
  1491.    (ioCompletion :POINTER)
  1492.    (ioResult :SIGNED-INTEGER)
  1493.    (saveA5 :SIGNED-LONG)
  1494.    (reqCode :SIGNED-INTEGER)
  1495.    (reserved (:ARRAY :SIGNED-LONG 2))
  1496.    (serverHint :ADDRBLOCK)
  1497.    (dsRefNum :SIGNED-INTEGER)
  1498.    (callID :SIGNED-LONG)
  1499.    (identity :SIGNED-LONG)
  1500.    (gReserved1 :SIGNED-LONG)
  1501.    (gReserved2 :SIGNED-LONG)
  1502.    (gReserved3 :SIGNED-LONG)
  1503.    (clientData :SIGNED-LONG)
  1504.  
  1505.    (startingPoint (:POINTER :RECORDID))
  1506.    (reservedA (:ARRAY :SIGNED-LONG 2))
  1507.    (nameMatchString (:POINTER :RSTRING))
  1508.    (typesList (:HANDLE :RSTRING))
  1509.    (typeCount :SIGNED-LONG)
  1510.    (reservedB :SIGNED-LONG)
  1511.    (reservedC :SIGNED-INTEGER)
  1512.  
  1513. ; ERROR!! Record field MATCHNAMEHOW declared Non-PACKED BYTE !
  1514.    (matchNameHow :UNSIGNED-BYTE)
  1515.  
  1516. ; ERROR!! Record field MATCHTYPEHOW declared Non-PACKED BYTE !
  1517.    (matchTypeHow :UNSIGNED-BYTE)
  1518.    (getBuffer :POINTER)
  1519.    (getBufferSize :SIGNED-LONG)
  1520.    (directoryName (:POINTER :DIRECTORYNAME))
  1521.    (discriminator :DIRDISCRIMINATOR)
  1522.    )
  1523.  
  1524. ;  The FindRecordParse call-back function is defined as follows: 
  1525. (def-mactype :FOREACHRECORD (find-mactype :POINTER))
  1526. ;  FUNCTION ForEachRecord(clientData: LONGINT; enumSpec: DirEnumSpec;
  1527. ;                              pRLI: PackedRLIPtr): BOOLEAN; 
  1528.  
  1529. ;  This PB same as DirFindRecordGet except it includes the callback function
  1530.  
  1531. (defrecord DirFindRecordParsePB 
  1532.    (qLink :POINTER)
  1533.    (reserved1 :SIGNED-LONG)
  1534.    (reserved2 :SIGNED-LONG)
  1535.    (ioCompletion :POINTER)
  1536.    (ioResult :SIGNED-INTEGER)
  1537.    (saveA5 :SIGNED-LONG)
  1538.    (reqCode :SIGNED-INTEGER)
  1539.    (reserved (:ARRAY :SIGNED-LONG 2))
  1540.    (serverHint :ADDRBLOCK)
  1541.    (dsRefNum :SIGNED-INTEGER)
  1542.    (callID :SIGNED-LONG)
  1543.    (identity :SIGNED-LONG)
  1544.    (gReserved1 :SIGNED-LONG)
  1545.    (gReserved2 :SIGNED-LONG)
  1546.    (gReserved3 :SIGNED-LONG)
  1547.    (clientData :SIGNED-LONG)
  1548.  
  1549.    (startingPoint (:POINTER :RECORDID))
  1550.    (reservedA (:ARRAY :SIGNED-LONG 2))
  1551.    (nameMatchString (:POINTER :RSTRING))
  1552.    (typesList (:HANDLE :RSTRING))
  1553.    (typeCount :SIGNED-LONG)
  1554.    (reservedB :SIGNED-LONG)
  1555.    (reservedC :SIGNED-INTEGER)
  1556.  
  1557. ; ERROR!! Record field MATCHNAMEHOW declared Non-PACKED BYTE !
  1558.    (matchNameHow :UNSIGNED-BYTE)
  1559.  
  1560. ; ERROR!! Record field MATCHTYPEHOW declared Non-PACKED BYTE !
  1561.    (matchTypeHow :UNSIGNED-BYTE)
  1562.    (getBuffer :POINTER)
  1563.    (getBufferSize :SIGNED-LONG)
  1564.    (directoryName (:POINTER :DIRECTORYNAME))
  1565.    (discriminator :DIRDISCRIMINATOR)
  1566.    (forEachRecordFunc :POINTER)
  1567.    )
  1568.  
  1569. ; LookupGet:
  1570. ; aRecordList is an array of pointers to RecordIDs, each of which must
  1571. ; contain valid PackedRLI and a CreationID.  recordIDCount is
  1572. ; the size of this array.
  1573. ; attrTypeList is an array of pointers to AttributeTypes.  attrTypeCount is
  1574. ; the size of this array.
  1575. ; staringRecordIndex is the record from which to continue the lookup.
  1576. ; If you want to start from first record in the list, this must be 1 (zero: not).
  1577. ; This value must always be <= recordIDCount.
  1578. ; startingAttributeIndex is the AttributeType from which we want to continue the lookup.
  1579. ; If you want to start from first attribute in the list, this must be 1 (zero: not).
  1580. ; This value must always be <= attrTypeCount.
  1581. ; startingAttribute is the value of the attribute value from which we want to
  1582. ; continue lookup. In case of directories supporting creationIDs, startingAttribute
  1583. ; may contain only a CID. Other directories may require the entire value.
  1584. ; If a non-null cid is given and if an attribute value with that cid is not found, this
  1585. ; call will terminate with kOCENoSuchAttribute error. A client should not make a LookupParse call
  1586. ; after getting this error.
  1587. ; 'includeStartingPoint' BOOLEAN can be set to 'true' to receive the value specified in the
  1588. ; startingPoint in the results returned. If this is set to 'false', the value
  1589. ; specified in the startingAttribute will not be returned.
  1590. ; When LookupGet call fails with kOCEMoreData, the client will be able to find out where the call ended
  1591. ; with a subsequent LookupParse call. When the LookupParse call completes with kOCEMoreData,
  1592. ; lastRecordIndex, lastAttributeIndex and lastValueCID will point to the corresponding
  1593. ; recordID, attributeType and the CreationID of the last value returned successfully. These parameters
  1594. ; are exactly the same ones for the startingRecordIndex, startingAttributeIndex, and startingAttrValueCID
  1595. ; so they can be used in a subsequent LookupGet call to continue the lookup.
  1596. ; In an extreme case, It is possible that we had an attribute value that is too large to fit
  1597. ; in the client's buffer. In such cases, if it was the only thing that we tried to fit
  1598. ; into the buffer, the client will not able to proceed further because he will not know the
  1599. ; attributeCID of the attribute to continue with.  Also he does not know how big a buffer
  1600. ; would be needed for the next call to get this 'mondo' attribute value successfully.
  1601. ; to support this, LookupParse call will do the following:
  1602. ; If LookupGet has failed with kOCEMoreData error, LookupParse will check to make sure that
  1603. ; ForEachAttributeValueFunc has been called at least once. If so, the client has the option
  1604. ; to continue from that attribute CreationID (for PAB/ADAP) in the next LookupGet call.
  1605. ; However, if it was not even called once, then the attribute value may be too big to fit in the
  1606. ; user's buffer. In this case, lastAttrValueCID (lastAttribute) and attrSize are returned in the
  1607. ; parse buffer and the call will fail with kOCEMoreAttrValue. However, it is possible that
  1608. ; ForEachAttributeValue was not called because the user does not have read access to some of
  1609. ; the attributeTypes in the list, and the buffer was full before even reading the creationID of
  1610. ; any of the attribute values.  A kOCEMoreData error is returned.
  1611. ; The Toolbox will check for duplicate RecordIDs in the aRecordList. If found, it will return
  1612. ; 'daDuplicateRecordIDErr'.
  1613. ; The Toolbox will check for duplicate AttributeTypes in the attrTypeList. If found it will
  1614. ; return 'daDuplicateAttrTypeErr'.
  1615.  
  1616. (defrecord DirLookupGetPB 
  1617.    (qLink :POINTER)
  1618.    (reserved1 :SIGNED-LONG)
  1619.    (reserved2 :SIGNED-LONG)
  1620.    (ioCompletion :POINTER)
  1621.    (ioResult :SIGNED-INTEGER)
  1622.    (saveA5 :SIGNED-LONG)
  1623.    (reqCode :SIGNED-INTEGER)
  1624.    (reserved (:ARRAY :SIGNED-LONG 2))
  1625.    (serverHint :ADDRBLOCK)
  1626.    (dsRefNum :SIGNED-INTEGER)
  1627.    (callID :SIGNED-LONG)
  1628.    (identity :SIGNED-LONG)
  1629.    (gReserved1 :SIGNED-LONG)
  1630.    (gReserved2 :SIGNED-LONG)
  1631.    (gReserved3 :SIGNED-LONG)
  1632.    (clientData :SIGNED-LONG)
  1633.  
  1634.    (aRecordList (:HANDLE :RECORDID));   --> an array of RecordID pointers 
  1635.    (attrTypeList (:HANDLE :ATTRIBUTETYPE));   --> an array of attribute types 
  1636.    (cReserved :SIGNED-LONG)     ;   --  
  1637.    (dReserved :SIGNED-LONG)     ;   --  
  1638.    (eReserved :SIGNED-LONG)     ;   --  
  1639.    (fReserved :SIGNED-LONG)     ;   --  
  1640.    (recordIDCount :SIGNED-LONG) ;   --> 
  1641.    (attrTypeCount :SIGNED-LONG) ;   --> 
  1642.    (includeStartingPoint :BOOLEAN);   --> if true return the value specified by the starting indices 
  1643. ;     padByte: Byte;    
  1644.    (i1Reserved :SIGNED-INTEGER) ;   --  
  1645.    (getBuffer :POINTER)         ;   --> 
  1646.    (getBufferSize :SIGNED-LONG) ;   --> 
  1647.    (startingRecordIndex :SIGNED-LONG);   --> start from this record 
  1648.    (startingAttrTypeIndex :SIGNED-LONG);   --> start from this attribute type 
  1649.    (startingAttribute :ATTRIBUTE);   --> start from this attribute value 
  1650.    (pReserved :SIGNED-LONG)     ;   --  
  1651.    )
  1652.  
  1653. ;  The Lookup call-back functions are defined as follows: 
  1654.  
  1655. (def-mactype :FOREACHLOOKUPRECORDID (find-mactype :POINTER));  FUNCTION ForEachLookupRecordID(clientData: long; recordID: RecordID): BOOLEAN;
  1656. (def-mactype :FOREACHATTRTYPELOOKUP (find-mactype :POINTER));  FUNCTION ForEachAttrTypeLookup(clientData: long; attrType: AttributeTypePtr; myAttrAccMask: AccessMask): BOOLEAN;
  1657. (def-mactype :FOREACHATTRVALUE (find-mactype :POINTER));  FUNCTION ForEachAttrValue(clientData: long; attribute: Attribute): BOOLEAN;
  1658.  
  1659. ; LookupParse:
  1660. ; After a LookupGet call has completed, call LookupParse
  1661. ; to parse through the buffer that was filled in LookupGet.  The
  1662. ; toolbox will parse through the buffer and call the appropriate call-back routines
  1663. ; for each item in the getBuffer.
  1664. ; 'eachRecordID' will be called each time to return to the client one of the
  1665. ; RecordIDs from aRecordList.  The clientData parameter that you
  1666. ; pass in the parameter block will be passed to eachRecordID.
  1667. ; You are free to put anything in clientData - it is intended to allow
  1668. ; you some way to match the call-back to the original call (case: in; example: for; you make simultaneous asynchronous LookupGet calls).  If you don't
  1669. ; want to get a call-back for each RecordID (example: for; if you're looking up
  1670. ; attributes for only one RecordID), pass nil for eachRecordID.
  1671. ; After forEachLocalRecordIDFunc is called, eachAttrType may be called to pass an
  1672. ; attribute type (one from attrTypeList) that exists in the record specified
  1673. ; in the last eachRecordID call.  If you don't want to get a call-back for
  1674. ; each AttributeType (example: for; if you're looking up only one attribute type,
  1675. ; or you prefer to read the type from the Attribute struct during the eachAttrValue
  1676. ; call-back routine), pass nil for eachAttrType. However access controls may
  1677. ; prohibit you from reading some attribute types; in that case eachAttrValue
  1678. ; may not be called even though the value exists. Hence the client should
  1679. ; supply this call-back function to see the access controls for each attribute type.
  1680. ; This will be followed by one or more calls to eachAttrValue, to pass the
  1681. ; type, tag, and attribute value.  NOTE THIS CHANGE:  you are no longer expected to
  1682. ; pass a pointer to a buffer in which to put the value.  Now you get a pointer to
  1683. ; the value, and you can process it within the call-back routine.
  1684. ; After one or more values are returned, eachAttrType may be called again to pass
  1685. ; another attribute type that exists in the last-specified RecordID.
  1686. ; The client should return FALSE from eachRecordID, eachAttrType, and
  1687. ; eachAttrValue to continue processing of the LookupParse request.  Returning TRUE
  1688. ; from any call-back will terminate the LookupParse request.
  1689. ; If LookupGet has failed with kOCEMoreData error, LookupParse will check to make sure that
  1690. ; ForEachAttributeValueFunc has been called at least once. If so, the client has the option
  1691. ; to continue from that attribute CreationID (for PAB/ADAP) in the next LookupGet call.
  1692. ; However, if it was not even called once, then the attribute value may be too big to fit in the
  1693. ; user's buffer. In this case, lastAttrValueCID (lastAttribute) and attrSize are returned in the
  1694. ; parse buffer and the call will fail with kOCEMoreAttrValue. However, it is possible that
  1695. ; ForEachAttributeValue was not called because the user does not have read access to some of
  1696. ; the attributeTypes in the list, and the buffer was full before even reading the creationID of
  1697. ; any of the attribute values.  A kOCEMoreData error is returned.
  1698. ; For synchronous calls, the call-back routine actually runs as part of the same thread
  1699. ; of execution as the thread that made the LookupParse call.  That means that the
  1700. ; same low-memory globals, A5, stack, etc. are in effect during the call-back
  1701. ; that were in effect when the call was made.  Because of this, the call-back
  1702. ; routine has the same restrictions as the caller of LookupParse:
  1703. ; if LookupParse was not called from interrupt level, then the call-
  1704. ; back routine can allocate memory. For asynchronous calls, call-back routine is
  1705. ; like a ioCompletion except that A5 will be preserved for the application.
  1706.  
  1707. (defrecord DirLookupParsePB 
  1708.    (qLink :POINTER)
  1709.    (reserved1 :SIGNED-LONG)
  1710.    (reserved2 :SIGNED-LONG)
  1711.    (ioCompletion :POINTER)
  1712.    (ioResult :SIGNED-INTEGER)
  1713.    (saveA5 :SIGNED-LONG)
  1714.    (reqCode :SIGNED-INTEGER)
  1715.    (reserved (:ARRAY :SIGNED-LONG 2))
  1716.    (serverHint :ADDRBLOCK)
  1717.    (dsRefNum :SIGNED-INTEGER)
  1718.    (callID :SIGNED-LONG)
  1719.    (identity :SIGNED-LONG)
  1720.    (gReserved1 :SIGNED-LONG)
  1721.    (gReserved2 :SIGNED-LONG)
  1722.    (gReserved3 :SIGNED-LONG)
  1723.    (clientData :SIGNED-LONG)
  1724.  
  1725.    (aRecordList (:HANDLE :RECORDID));   --> must be same from the corresponding Get call 
  1726.    (attrTypeList (:HANDLE :ATTRIBUTETYPE));   --> must be same from the corresponding Get call 
  1727.    (cReserved :SIGNED-LONG)     ;   --  
  1728.    (eachRecordID :POINTER)      ;   --> 
  1729.    (eachAttrType :POINTER)      ;   --> 
  1730.    (eachAttrValue :POINTER)     ;   --> 
  1731.    (recordIDCount :SIGNED-LONG) ;   --> must be same from the corresponding Get call 
  1732.    (attrTypeCount :SIGNED-LONG) ;   --> must be same from the corresponding Get call 
  1733.    (iReserved :SIGNED-LONG)     ;   --  
  1734.    (getBuffer :POINTER)         ;   --> must be same from the corresponding Get call
  1735.    (getBufferSize :SIGNED-LONG) ;   --> must be same from the corresponding Get call
  1736.    (lastRecordIndex :SIGNED-LONG);  <--  last RecordID processed when parse completed 
  1737.    (lastAttributeIndex :SIGNED-LONG);  <--  last Attribute Type processed when parse completed 
  1738.    (lastAttribute :ATTRIBUTE)   ;  <--  last attribute value (with this CreationID) processed when parse completed 
  1739.    (attrSize :SIGNED-LONG)      ;  <--  length of the attribute we did not return 
  1740.    )
  1741.  
  1742. ;  AddAttributeValue 
  1743.  
  1744. (defrecord DirAddAttributeValuePB 
  1745.    (qLink :POINTER)
  1746.    (reserved1 :SIGNED-LONG)
  1747.    (reserved2 :SIGNED-LONG)
  1748.    (ioCompletion :POINTER)
  1749.    (ioResult :SIGNED-INTEGER)
  1750.    (saveA5 :SIGNED-LONG)
  1751.    (reqCode :SIGNED-INTEGER)
  1752.    (reserved (:ARRAY :SIGNED-LONG 2))
  1753.    (serverHint :ADDRBLOCK)
  1754.    (dsRefNum :SIGNED-INTEGER)
  1755.    (callID :SIGNED-LONG)
  1756.    (identity :SIGNED-LONG)
  1757.    (gReserved1 :SIGNED-LONG)
  1758.    (gReserved2 :SIGNED-LONG)
  1759.    (gReserved3 :SIGNED-LONG)
  1760.    (clientData :SIGNED-LONG)
  1761.  
  1762.    (aRecord (:POINTER :RECORDID));   --> 
  1763.    (attr (:POINTER :ATTRIBUTE)) ;   --> AttributeCreationID returned here 
  1764.    )
  1765.  
  1766. ; aRecord must contain valid PackedRLI and a CreationID.
  1767. ; Instead of passing type, length, and value in three separate
  1768. ; fields, we take a pointer to an Attribute structure that contains
  1769. ; all three, and has room for the AttributeCreationNumber.
  1770. ; The AttributeCreationID will be returned in the attr itself.
  1771. ; The AttributeTag tells the directory service that the attribute is an RString,
  1772. ; binary, or a RecordID.
  1773.  
  1774. ; DeleteAttributeType:
  1775. ; This call is provided so that an existing AttributeType can be deleted.
  1776. ; If any attribute values exist for this type, they will all be deleted
  1777. ; (if the user has access rights to delete the values) and then the attribute type
  1778. ; will be deleted. Otherwise dsAccessDenied error will be returned.
  1779.  
  1780. (defrecord DirDeleteAttributeTypePB 
  1781.    (qLink :POINTER)
  1782.    (reserved1 :SIGNED-LONG)
  1783.    (reserved2 :SIGNED-LONG)
  1784.    (ioCompletion :POINTER)
  1785.    (ioResult :SIGNED-INTEGER)
  1786.    (saveA5 :SIGNED-LONG)
  1787.    (reqCode :SIGNED-INTEGER)
  1788.    (reserved (:ARRAY :SIGNED-LONG 2))
  1789.    (serverHint :ADDRBLOCK)
  1790.    (dsRefNum :SIGNED-INTEGER)
  1791.    (callID :SIGNED-LONG)
  1792.    (identity :SIGNED-LONG)
  1793.    (gReserved1 :SIGNED-LONG)
  1794.    (gReserved2 :SIGNED-LONG)
  1795.    (gReserved3 :SIGNED-LONG)
  1796.    (clientData :SIGNED-LONG)
  1797.  
  1798.    (aRecord (:POINTER :RECORDID));   --> 
  1799.    (attrType (:POINTER :ATTRIBUTETYPE));   --> 
  1800.    )
  1801.  
  1802. ;     DeleteAttributeValue
  1803. (defrecord DirDeleteAttributeValuePB 
  1804.    (qLink :POINTER)
  1805.    (reserved1 :SIGNED-LONG)
  1806.    (reserved2 :SIGNED-LONG)
  1807.    (ioCompletion :POINTER)
  1808.    (ioResult :SIGNED-INTEGER)
  1809.    (saveA5 :SIGNED-LONG)
  1810.    (reqCode :SIGNED-INTEGER)
  1811.    (reserved (:ARRAY :SIGNED-LONG 2))
  1812.    (serverHint :ADDRBLOCK)
  1813.    (dsRefNum :SIGNED-INTEGER)
  1814.    (callID :SIGNED-LONG)
  1815.    (identity :SIGNED-LONG)
  1816.    (gReserved1 :SIGNED-LONG)
  1817.    (gReserved2 :SIGNED-LONG)
  1818.    (gReserved3 :SIGNED-LONG)
  1819.    (clientData :SIGNED-LONG)
  1820.  
  1821.    (aRecord (:POINTER :RECORDID));   -> 
  1822.    (attr (:POINTER :ATTRIBUTE)) ;   -> 
  1823.    )
  1824.  
  1825. ;     ChangeAttributeValue:
  1826. ;     currentAttr ==> the attribute to be changed. For ADAS and PAB CreationID is
  1827. ;                     sufficient
  1828. ;     newAttr     ==> new value for the attribute. For ADAS and PAB
  1829. ;                     CreationID field will be set when
  1830. ;                     the call succeesfully completes
  1831. ;     aRecord     ==> must contain valid PackedRecordLocationInfo and a CreationID.
  1832.  
  1833. (defrecord DirChangeAttributeValuePB 
  1834.    (qLink :POINTER)
  1835.    (reserved1 :SIGNED-LONG)
  1836.    (reserved2 :SIGNED-LONG)
  1837.    (ioCompletion :POINTER)
  1838.    (ioResult :SIGNED-INTEGER)
  1839.    (saveA5 :SIGNED-LONG)
  1840.    (reqCode :SIGNED-INTEGER)
  1841.    (reserved (:ARRAY :SIGNED-LONG 2))
  1842.    (serverHint :ADDRBLOCK)
  1843.    (dsRefNum :SIGNED-INTEGER)
  1844.    (callID :SIGNED-LONG)
  1845.    (identity :SIGNED-LONG)
  1846.    (gReserved1 :SIGNED-LONG)
  1847.    (gReserved2 :SIGNED-LONG)
  1848.    (gReserved3 :SIGNED-LONG)
  1849.    (clientData :SIGNED-LONG)
  1850.  
  1851.    (aRecord (:POINTER :RECORDID));   -> 
  1852.    (currentAttr (:POINTER :ATTRIBUTE));   -> 
  1853.    (newAttr (:POINTER :ATTRIBUTE));   -> 
  1854.    )
  1855.  
  1856. ;  VerifyAttributeValue 
  1857.  
  1858. (defrecord DirVerifyAttributeValuePB 
  1859.    (qLink :POINTER)
  1860.    (reserved1 :SIGNED-LONG)
  1861.    (reserved2 :SIGNED-LONG)
  1862.    (ioCompletion :POINTER)
  1863.    (ioResult :SIGNED-INTEGER)
  1864.    (saveA5 :SIGNED-LONG)
  1865.    (reqCode :SIGNED-INTEGER)
  1866.    (reserved (:ARRAY :SIGNED-LONG 2))
  1867.    (serverHint :ADDRBLOCK)
  1868.    (dsRefNum :SIGNED-INTEGER)
  1869.    (callID :SIGNED-LONG)
  1870.    (identity :SIGNED-LONG)
  1871.    (gReserved1 :SIGNED-LONG)
  1872.    (gReserved2 :SIGNED-LONG)
  1873.    (gReserved3 :SIGNED-LONG)
  1874.    (clientData :SIGNED-LONG)
  1875.  
  1876.    (aRecord (:POINTER :RECORDID));   --> 
  1877.    (attr (:POINTER :ATTRIBUTE)) ;   --> 
  1878.    )
  1879.  
  1880. ; aRecord must contain valid PackedRLI and a CreationID.
  1881. ; The attribute type and value are passed in the attribute structure.  If the
  1882. ; attribute CreationID is non-zero, the server will verify that an attribute with
  1883. ; the specified value and creation number exists in aRecord.  If the attribute
  1884. ; CreationID is zero, the server will verify the attribute by type and value
  1885. ; alone, and return the attribute CreationID in the Attribute struct if the
  1886. ; attribute exists.
  1887.  
  1888. ; EnumerateAttributeTypesGet:
  1889. ; The following two calls can be used to enumerate the attribute types present in
  1890. ; a specified RecordID.  The first, EnumerateAttributeTypesGet, processes the request
  1891. ; and reads the response into getBuffer, as much as will fit.  A kOCEMoreData error will
  1892. ; be returned if the buffer was not large enough.  After this call completes, the
  1893. ; client can call EnumerateAttributeTypesParse (below: see).
  1894. ; The user will able to continue from a startingPoint by setting a startingAttrType.
  1895. ; Typically, this should be the last value returned in EnumerateAttributeTypesParse call
  1896. ; when 'kOCEMoreData' is returned.
  1897. ; If 'includeStartingPoint' is true when a 'startingAttrType' is specified, the starting value
  1898. ; will be included in the results, if it exists. If this is set to false, this value will not
  1899. ; be included. AttributeTypes following this type will be returned.
  1900.  
  1901. (defrecord DirEnumerateAttributeTypesGetPB 
  1902.    (qLink :POINTER)
  1903.    (reserved1 :SIGNED-LONG)
  1904.    (reserved2 :SIGNED-LONG)
  1905.    (ioCompletion :POINTER)
  1906.    (ioResult :SIGNED-INTEGER)
  1907.    (saveA5 :SIGNED-LONG)
  1908.    (reqCode :SIGNED-INTEGER)
  1909.    (reserved (:ARRAY :SIGNED-LONG 2))
  1910.    (serverHint :ADDRBLOCK)
  1911.    (dsRefNum :SIGNED-INTEGER)
  1912.    (callID :SIGNED-LONG)
  1913.    (identity :SIGNED-LONG)
  1914.    (gReserved1 :SIGNED-LONG)
  1915.    (gReserved2 :SIGNED-LONG)
  1916.    (gReserved3 :SIGNED-LONG)
  1917.    (clientData :SIGNED-LONG)
  1918.  
  1919.    (aRecord (:POINTER :RECORDID));   --> 
  1920.    (startingAttrType (:POINTER :ATTRIBUTETYPE));   --> starting point 
  1921.    (cReserved :SIGNED-LONG)     ;   --  
  1922.    (dReserved :SIGNED-LONG)     ;   --  
  1923.    (eReserved :SIGNED-LONG)     ;   --  
  1924.    (fReserved :SIGNED-LONG)     ;   --  
  1925.    (gReserved :SIGNED-LONG)     ;   --  
  1926.    (hReserved :SIGNED-LONG)     ;   --  
  1927.  
  1928. ; ERROR!! Record field INCLUDESTARTINGPOINT declared PACKED BOOLEAN !
  1929.    (includeStartingPoint :BOOLEAN);   --> if true return the attrType specified by starting point 
  1930.    (padByte :UNSIGNED-BYTE)
  1931.    (i1Reserved :SIGNED-INTEGER) ;   --  
  1932.    (getBuffer :POINTER)         ;   --> 
  1933.    (getBufferSize :SIGNED-LONG) ;   --> 
  1934.    )
  1935.  
  1936. ;  The call-back function is defined as follows: 
  1937. (def-mactype :FOREACHATTRTYPE (find-mactype :POINTER))
  1938. ;  FUNCTION ForEachAttrType(clientData: long; attrType: AttributeType): BOOLEAN;
  1939.  
  1940. ; EnumerateAttributeTypesParse:
  1941. ; After an EnumerateAttributeTypesGet call has completed, call EnumerateAttributeTypesParse
  1942. ; to parse through the buffer that was filled in EnumerateAttributeTypesGet.  The
  1943. ; toolbox will parse through the buffer and call the call-back routine for
  1944. ; each attribute type in the getBuffer.
  1945. ; The client should return false from eachAttrType to continue
  1946. ; processing of the EnumerateAttributeTypesParse request.  Returning true will
  1947. ; terminate the EnumerateAttributeTypesParse request.  The clientData parameter that
  1948. ; you pass in the parameter block will be passed to eachAttrType.
  1949. ; You are free to put anything in clientData - it is intended to allow
  1950. ; you some way to match the call-back to the original call (case: in; example: for; you make simultaneous asynchronous calls).
  1951. ; For synchronous calls, the call-back routine actually runs as part of the same thread
  1952. ; of execution as the thread that made the EnumerateAttributeTypesParse call.  That means that the
  1953. ; same low-memory globals, A5, stack, etc. are in effect during the call-back
  1954. ; that were in effect when the call was made.  Because of this, the call-back
  1955. ; routine has the same restrictions as the caller of EnumerateAttributeTypesParse.
  1956. ; If EnumerateAttributeTypesParse was not called from interrupt level, then the call-
  1957. ; back routine can allocate memory. For asynchronous calls, call-back routine is
  1958. ; like a ioCompletion except that A5 will be preserved for the application.
  1959.  
  1960. (defrecord DirEnumerateAttributeTypesParsePB 
  1961.    (qLink :POINTER)
  1962.    (reserved1 :SIGNED-LONG)
  1963.    (reserved2 :SIGNED-LONG)
  1964.    (ioCompletion :POINTER)
  1965.    (ioResult :SIGNED-INTEGER)
  1966.    (saveA5 :SIGNED-LONG)
  1967.    (reqCode :SIGNED-INTEGER)
  1968.    (reserved (:ARRAY :SIGNED-LONG 2))
  1969.    (serverHint :ADDRBLOCK)
  1970.    (dsRefNum :SIGNED-INTEGER)
  1971.    (callID :SIGNED-LONG)
  1972.    (identity :SIGNED-LONG)
  1973.    (gReserved1 :SIGNED-LONG)
  1974.    (gReserved2 :SIGNED-LONG)
  1975.    (gReserved3 :SIGNED-LONG)
  1976.    (clientData :SIGNED-LONG)
  1977.  
  1978.    (aRecord (:POINTER :RECORDID));   --> Same as DirEnumerateAttributeTypesGetPB 
  1979.    (bReserved :SIGNED-LONG)     ;   --  
  1980.    (cReserved :SIGNED-LONG)     ;   --  
  1981.    (dReserved :SIGNED-LONG)     ;   --  
  1982.    (eachAttrType :POINTER)      ;   --> 
  1983.    (fReserved :SIGNED-LONG)     ;   --  
  1984.    (gReserved :SIGNED-LONG)     ;   --  
  1985.    (hReserved :SIGNED-LONG)     ;   --  
  1986.    (iReserved :SIGNED-LONG)     ;   --  
  1987.    (getBuffer :POINTER)         ;   --> 
  1988.    (getBufferSize :SIGNED-LONG) ;   --> 
  1989.    )
  1990.  
  1991. ; DirAbort:
  1992. ; With this call a user will able to abort an outstanding directory service call.
  1993. ; A user must pass a pointer to the parameter block for the outstanding call.
  1994. ; In the current version of the product, the toolbox will process this call
  1995. ; for NetSearchADAPDirectoriesGet or FindADAPDirectoryByNetSearch calls and if possible
  1996. ; it will abort. For other calls for ADAP and PAB this will return 'daAbortFailErr'.
  1997. ; For DSAM directories, this call will be passed to the corresponding DSAM driver.
  1998. ; The DSAM driver may process this call or may return 'daAbortFailErr'. This call can
  1999. ; be called only in synchronous mode. Since the abort call makes references to fields in
  2000. ; the pb associated with the original call, this pb must not be disposed or or altered if
  2001. ; the original call completes before the abort call has completed.
  2002.  
  2003. (defrecord DirAbortPB 
  2004.    (qLink :POINTER)
  2005.    (reserved1 :SIGNED-LONG)
  2006.    (reserved2 :SIGNED-LONG)
  2007.    (ioCompletion :POINTER)
  2008.    (ioResult :SIGNED-INTEGER)
  2009.    (saveA5 :SIGNED-LONG)
  2010.    (reqCode :SIGNED-INTEGER)
  2011.    (reserved (:ARRAY :SIGNED-LONG 2))
  2012.    (serverHint :ADDRBLOCK)
  2013.    (dsRefNum :SIGNED-INTEGER)
  2014.    (callID :SIGNED-LONG)
  2015.    (identity :SIGNED-LONG)
  2016.    (gReserved1 :SIGNED-LONG)
  2017.    (gReserved2 :SIGNED-LONG)
  2018.    (gReserved3 :SIGNED-LONG)
  2019.    (clientData :SIGNED-LONG)
  2020.  
  2021.    (pb :POINTER)                ;   --> pb for the call which must be aborted 
  2022. ;  ^DirParamBlock 
  2023.    )
  2024.  
  2025. ; AddPseudonym:
  2026. ; An alternate name and type can be added to a given record. If allowDuplicate
  2027. ; is set the name and type will be added even if the same name and type already
  2028. ; exists.
  2029.  
  2030. (defrecord DirAddPseudonymPB 
  2031.    (qLink :POINTER)
  2032.    (reserved1 :SIGNED-LONG)
  2033.    (reserved2 :SIGNED-LONG)
  2034.    (ioCompletion :POINTER)
  2035.    (ioResult :SIGNED-INTEGER)
  2036.    (saveA5 :SIGNED-LONG)
  2037.    (reqCode :SIGNED-INTEGER)
  2038.    (reserved (:ARRAY :SIGNED-LONG 2))
  2039.    (serverHint :ADDRBLOCK)
  2040.    (dsRefNum :SIGNED-INTEGER)
  2041.    (callID :SIGNED-LONG)
  2042.    (identity :SIGNED-LONG)
  2043.    (gReserved1 :SIGNED-LONG)
  2044.    (gReserved2 :SIGNED-LONG)
  2045.    (gReserved3 :SIGNED-LONG)
  2046.    (clientData :SIGNED-LONG)
  2047.  
  2048.    (aRecord (:POINTER :RECORDID));   --> RecordID to which pseudonym is to be added 
  2049.    (pseudonymName (:POINTER :RSTRING));   --> new name to be added as pseudonym 
  2050.    (pseudonymType (:POINTER :RSTRING));   --> new name to be added as pseudonym 
  2051.    (allowDuplicate :BOOLEAN)    ;   --> 
  2052.    )
  2053.  
  2054. ; DeletePseudonym:
  2055. ; An alternate name and type for a given record can be deleted.
  2056.  
  2057. (defrecord DirDeletePseudonymPB 
  2058.    (qLink :POINTER)
  2059.    (reserved1 :SIGNED-LONG)
  2060.    (reserved2 :SIGNED-LONG)
  2061.    (ioCompletion :POINTER)
  2062.    (ioResult :SIGNED-INTEGER)
  2063.    (saveA5 :SIGNED-LONG)
  2064.    (reqCode :SIGNED-INTEGER)
  2065.    (reserved (:ARRAY :SIGNED-LONG 2))
  2066.    (serverHint :ADDRBLOCK)
  2067.    (dsRefNum :SIGNED-INTEGER)
  2068.    (callID :SIGNED-LONG)
  2069.    (identity :SIGNED-LONG)
  2070.    (gReserved1 :SIGNED-LONG)
  2071.    (gReserved2 :SIGNED-LONG)
  2072.    (gReserved3 :SIGNED-LONG)
  2073.    (clientData :SIGNED-LONG)
  2074.  
  2075.    (aRecord (:POINTER :RECORDID));   --> RecordID to which pseudonym to be added 
  2076.    (pseudonymName (:POINTER :RSTRING));   --> pseudonymName to be deleted 
  2077.    (pseudonymType (:POINTER :RSTRING));   --> pseudonymType to be deleted 
  2078.    )
  2079.  
  2080. ;     AddAlias:
  2081. ;     This call can be used to create an alias  record. The alias
  2082. ;     can be created either in the same or different cluster. ADAS will not support
  2083. ;     this call for this release. A new directory capability flag 'kSupportsAlias' will indicate
  2084. ;     if the directory supports this call. PAB's will support this call. For the PAB implementation,
  2085. ;     this call will create a record with the name and type specified an aRecord.
  2086. ;     This call works exactly like AddRecord.
  2087. ;     If 'allowDuplicate' is false and another record with same name and type already exists
  2088. ;     'daNoDupAllowed' error will be returned.
  2089. (defrecord DirAddAliasPB 
  2090.    (qLink :POINTER)
  2091.    (reserved1 :SIGNED-LONG)
  2092.    (reserved2 :SIGNED-LONG)
  2093.    (ioCompletion :POINTER)
  2094.    (ioResult :SIGNED-INTEGER)
  2095.    (saveA5 :SIGNED-LONG)
  2096.    (reqCode :SIGNED-INTEGER)
  2097.    (reserved (:ARRAY :SIGNED-LONG 2))
  2098.    (serverHint :ADDRBLOCK)
  2099.    (dsRefNum :SIGNED-INTEGER)
  2100.    (callID :SIGNED-LONG)
  2101.    (identity :SIGNED-LONG)
  2102.    (gReserved1 :SIGNED-LONG)
  2103.    (gReserved2 :SIGNED-LONG)
  2104.    (gReserved3 :SIGNED-LONG)
  2105.    (clientData :SIGNED-LONG)
  2106.  
  2107.    (aRecord (:POINTER :RECORDID));   -> 
  2108.    (allowDuplicate :BOOLEAN)    ;   -> 
  2109.    )
  2110.  
  2111. ; DirFindValue:
  2112. ; This call can be used to find the occurrence of a value. The value
  2113. ; to be matched is passed in the buffer 'matchingData' field. The current
  2114. ; ADAP/PAB implementation will match a maximum of 32 bytes of data.
  2115. ; For attribute values in the PAB/ADAP implementation, only the first 32 bytes will
  2116. ; be used for comparing the occurrence of data. Search can be restricted to
  2117. ; a particular record and/or attribute type by specifying 'aRecord' or 'aType'.
  2118. ; After finding one occurrence, 'startingRecord' and 'startingAttribute'
  2119. ; can be specified to find the next occurrence of the same value.
  2120. ; 'sortDirection' can be specified with starting values to search forward or backward.
  2121. ; When a matching value is found, the 'recordFound' indicates the reccordID in which the
  2122. ; data occurrence was found, 'attributeFound' indicates the attribute with in which the
  2123. ; matching data was found. ADAP/PAB implementation returns only the type and creationID of
  2124. ; attributes. Directories which don't support creationIDs may return the
  2125. ; complete value; hence this call may need a buffer to hold the data. For ADAP/PAB implementations
  2126. ; the user has to make a DirLookup call to get the actual data. 'recordFound' and
  2127. ; 'attributeFound' can be used to initialize 'startingRecord' and 'startingAttribute' to
  2128. ; find the next occurrence of the value.
  2129.  
  2130. (defrecord DirFindValuePB 
  2131.    (qLink :POINTER)
  2132.    (reserved1 :SIGNED-LONG)
  2133.    (reserved2 :SIGNED-LONG)
  2134.    (ioCompletion :POINTER)
  2135.    (ioResult :SIGNED-INTEGER)
  2136.    (saveA5 :SIGNED-LONG)
  2137.    (reqCode :SIGNED-INTEGER)
  2138.    (reserved (:ARRAY :SIGNED-LONG 2))
  2139.    (serverHint :ADDRBLOCK)
  2140.    (dsRefNum :SIGNED-INTEGER)
  2141.    (callID :SIGNED-LONG)
  2142.    (identity :SIGNED-LONG)
  2143.    (gReserved1 :SIGNED-LONG)
  2144.    (gReserved2 :SIGNED-LONG)
  2145.    (gReserved3 :SIGNED-LONG)
  2146.    (clientData :SIGNED-LONG)
  2147.  
  2148.    (aRLI (:POINTER :PACKEDRLI)) ;   --> an RLI specifying the cluster to be enumerated 
  2149.    (aRecord (:POINTER :LOCALRECORDID));   --> if not nil, look only in this record 
  2150.    (attrType (:POINTER :ATTRIBUTETYPE));   --> if not nil, look only in this attribute type 
  2151.    (startingRecord (:POINTER :LOCALRECORDID));   --> record in which to start searching 
  2152.    (startingAttribute (:POINTER :ATTRIBUTE));   --> attribute in which to start searching 
  2153.    (recordFound (:POINTER :LOCALRECORDID));  <--  record in which data was found 
  2154.    (attributeFound :ATTRIBUTE)  ;  <--  attribute in which data was found 
  2155.    (matchSize :SIGNED-LONG)     ;   --> length of matching bytes 
  2156.    (matchingData :POINTER)      ;   --> data bytes to be matched in search 
  2157.    (sortDirection :SIGNED-INTEGER);   --> sort direction (forwards or backwards) 
  2158.    )
  2159.  
  2160. ; EnumeratePseudonymGet:
  2161. ; This call can be used to enumerate the existing pseudonyms for
  2162. ; a given record specified in 'aRecord'. A starting point can be specified
  2163. ; by 'startingName' and 'startingType'. If the 'includeStartingPoint' boolean
  2164. ; is true and a starting point is specified, the name specified by startingName
  2165. ; and startingType also is returned in the results, if it exists. If this is set to false,
  2166. ; the pseudonym in startingName and Type is not included.
  2167. ; Pseudonyms returned in the 'getBuffer' can be extracted by making an
  2168. ; EnumeratePseudonymParse call. The results will consist of a RecordID with the
  2169. ; name and type of the pseudonym. If the buffer could not hold all the results, then
  2170. ; 'kOCEMoreData' error will be returned. The user will be able to continue the call by
  2171. ; using the last result returned as starting point for the next call.
  2172.  
  2173. (defrecord DirEnumeratePseudonymGetPB 
  2174.    (qLink :POINTER)
  2175.    (reserved1 :SIGNED-LONG)
  2176.    (reserved2 :SIGNED-LONG)
  2177.    (ioCompletion :POINTER)
  2178.    (ioResult :SIGNED-INTEGER)
  2179.    (saveA5 :SIGNED-LONG)
  2180.    (reqCode :SIGNED-INTEGER)
  2181.    (reserved (:ARRAY :SIGNED-LONG 2))
  2182.    (serverHint :ADDRBLOCK)
  2183.    (dsRefNum :SIGNED-INTEGER)
  2184.    (callID :SIGNED-LONG)
  2185.    (identity :SIGNED-LONG)
  2186.    (gReserved1 :SIGNED-LONG)
  2187.    (gReserved2 :SIGNED-LONG)
  2188.    (gReserved3 :SIGNED-LONG)
  2189.    (clientData :SIGNED-LONG)
  2190.  
  2191.    (aRecord (:POINTER :RECORDID));   --> 
  2192.    (startingName (:POINTER :RSTRING));   --> 
  2193.    (startingType (:POINTER :RSTRING));   --> 
  2194.    (dReserved :SIGNED-LONG)     ;   --  
  2195.    (eReserved :SIGNED-LONG)     ;   --  
  2196.    (fReserved :SIGNED-LONG)     ;   --  
  2197.    (gReserved :SIGNED-LONG)     ;   --  
  2198.    (hReserved :SIGNED-LONG)     ;   --  
  2199.  
  2200. ; ERROR!! Record field INCLUDESTARTINGPOINT declared PACKED BOOLEAN !
  2201.    (includeStartingPoint :BOOLEAN);   --> if true return the Pseudonym specified by
  2202. ;                                                 starting point will be included 
  2203.    (padByte :UNSIGNED-BYTE)
  2204.    (i1Reserved :SIGNED-INTEGER) ;   --  
  2205.    (getBuffer :POINTER)         ;   --> 
  2206.    (getBufferSize :SIGNED-LONG) ;   --> 
  2207.    )
  2208.  
  2209. ;  The call-back function is defined as follows: 
  2210. (def-mactype :FOREACHRECORDID (find-mactype :POINTER))
  2211. ;  FUNCTION ForEachRecordID(clientData: long; recordID: RecordID): BOOLEAN;
  2212.  
  2213. ; EnumeratePseudonymParse:
  2214. ; The pseudonyms returned in the 'getBuffer' from the EnumeratePseudonymGet call
  2215. ; can be extracted by using the EnumeratePseudonymParse call. 'eachRecordID'
  2216. ; will be called for each pseudonym.
  2217. ; Returning true from any call-back will terminate the EnumeratePseudonymParse call.
  2218. ; For synchronous calls, the call-back routine actually runs as part of the same thread
  2219. ; of execution as the thread that made the EnumeratePseudonymParse call.  That means that the
  2220. ; same low-memory globals, A5, stack, etc. are in effect during the call-back
  2221. ; that were in effect when the call was made.  Because of this, the call-back
  2222. ; routine has the same restrictions as the caller of EnumeratePseudonymParse:
  2223. ; if EnumeratePseudonymParse was not called from interrupt level, then the call-
  2224. ; back routine can allocate memory. For asynchronous calls, call-back routine is
  2225. ; like a ioCompletion except that A5 will be preserved for the application.
  2226.  
  2227. (defrecord DirEnumeratePseudonymParsePB 
  2228.    (qLink :POINTER)
  2229.    (reserved1 :SIGNED-LONG)
  2230.    (reserved2 :SIGNED-LONG)
  2231.    (ioCompletion :POINTER)
  2232.    (ioResult :SIGNED-INTEGER)
  2233.    (saveA5 :SIGNED-LONG)
  2234.    (reqCode :SIGNED-INTEGER)
  2235.    (reserved (:ARRAY :SIGNED-LONG 2))
  2236.    (serverHint :ADDRBLOCK)
  2237.    (dsRefNum :SIGNED-INTEGER)
  2238.    (callID :SIGNED-LONG)
  2239.    (identity :SIGNED-LONG)
  2240.    (gReserved1 :SIGNED-LONG)
  2241.    (gReserved2 :SIGNED-LONG)
  2242.    (gReserved3 :SIGNED-LONG)
  2243.    (clientData :SIGNED-LONG)
  2244.  
  2245.    (aRecord (:POINTER :RECORDID));   --> same as DirEnumerateAliasesGetPB 
  2246.    (bReserved :SIGNED-LONG)     ;   --  
  2247.    (cReserved :SIGNED-LONG)     ;   --  
  2248.    (eachRecordID :POINTER)      ;   --> 
  2249.    (eReserved :SIGNED-LONG)     ;   --  
  2250.    (fReserved :SIGNED-LONG)     ;   --  
  2251.    (gReserved :SIGNED-LONG)     ;   --  
  2252.    (hReserved :SIGNED-LONG)     ;   --  
  2253.    (iReserved :SIGNED-LONG)     ;   --  
  2254.    (getBuffer :POINTER)         ;   --> 
  2255.    (getBufferSize :SIGNED-LONG) ;   --> 
  2256.    )
  2257.  
  2258. ;  GetNameAndType 
  2259.  
  2260. (defrecord DirGetNameAndTypePB 
  2261.    (qLink :POINTER)
  2262.    (reserved1 :SIGNED-LONG)
  2263.    (reserved2 :SIGNED-LONG)
  2264.    (ioCompletion :POINTER)
  2265.    (ioResult :SIGNED-INTEGER)
  2266.    (saveA5 :SIGNED-LONG)
  2267.    (reqCode :SIGNED-INTEGER)
  2268.    (reserved (:ARRAY :SIGNED-LONG 2))
  2269.    (serverHint :ADDRBLOCK)
  2270.    (dsRefNum :SIGNED-INTEGER)
  2271.    (callID :SIGNED-LONG)
  2272.    (identity :SIGNED-LONG)
  2273.    (gReserved1 :SIGNED-LONG)
  2274.    (gReserved2 :SIGNED-LONG)
  2275.    (gReserved3 :SIGNED-LONG)
  2276.    (clientData :SIGNED-LONG)
  2277.  
  2278.    (aRecord (:POINTER :RECORDID));   --> 
  2279.    )
  2280.  
  2281. ; aRecord must contain valid RLI and a CreationID.  It
  2282. ; must also contain pointers to maximum-length RStrings (name and type fields)
  2283. ; in which will be returned the record's distinguished name and type.
  2284.  
  2285. ; SetNameAndType:
  2286. ; This call can be used to change a name and type for a record. The record
  2287. ; to be renamed is specified using 'aRecord'.
  2288. ; 'newName' and 'newType' indicate the name and type to be set.
  2289. ; 'allowDuplicate' if true indicates that name is to be set even if another
  2290. ; name and type exactly matches the newName and newType specified.
  2291. ; 'newName' and 'newType' are required since the directories not supporting
  2292. ; CreationID require name and type fields in the recordID to identify a given
  2293. ; record.
  2294.  
  2295. (defrecord DirSetNameAndTypePB 
  2296.    (qLink :POINTER)
  2297.    (reserved1 :SIGNED-LONG)
  2298.    (reserved2 :SIGNED-LONG)
  2299.    (ioCompletion :POINTER)
  2300.    (ioResult :SIGNED-INTEGER)
  2301.    (saveA5 :SIGNED-LONG)
  2302.    (reqCode :SIGNED-INTEGER)
  2303.    (reserved (:ARRAY :SIGNED-LONG 2))
  2304.    (serverHint :ADDRBLOCK)
  2305.    (dsRefNum :SIGNED-INTEGER)
  2306.    (callID :SIGNED-LONG)
  2307.    (identity :SIGNED-LONG)
  2308.    (gReserved1 :SIGNED-LONG)
  2309.    (gReserved2 :SIGNED-LONG)
  2310.    (gReserved3 :SIGNED-LONG)
  2311.    (clientData :SIGNED-LONG)
  2312.  
  2313.    (aRecord (:POINTER :RECORDID));   --> 
  2314.  
  2315. ; ERROR!! Record field ALLOWDUPLICATE declared PACKED BOOLEAN !
  2316.    (allowDuplicate :BOOLEAN)    ;   --> 
  2317.    (padByte :UNSIGNED-BYTE)
  2318.    (newName (:POINTER :RSTRING));   --> new name for the record 
  2319.    (newType (:POINTER :RSTRING));   --> new type for the record 
  2320.    )
  2321.  
  2322. ; DirGetMetaRecordInfo: This call can be made to obtain
  2323. ; the MetaRecordInfo for a given record. Information returned
  2324. ; is 16 bytes of OPAQUE information about the record.
  2325.  
  2326. (defrecord DirGetRecordMetaInfoPB 
  2327.    (qLink :POINTER)
  2328.    (reserved1 :SIGNED-LONG)
  2329.    (reserved2 :SIGNED-LONG)
  2330.    (ioCompletion :POINTER)
  2331.    (ioResult :SIGNED-INTEGER)
  2332.    (saveA5 :SIGNED-LONG)
  2333.    (reqCode :SIGNED-INTEGER)
  2334.    (reserved (:ARRAY :SIGNED-LONG 2))
  2335.    (serverHint :ADDRBLOCK)
  2336.    (dsRefNum :SIGNED-INTEGER)
  2337.    (callID :SIGNED-LONG)
  2338.    (identity :SIGNED-LONG)
  2339.    (gReserved1 :SIGNED-LONG)
  2340.    (gReserved2 :SIGNED-LONG)
  2341.    (gReserved3 :SIGNED-LONG)
  2342.    (clientData :SIGNED-LONG)
  2343.  
  2344.    (aRecord (:POINTER :RECORDID));   --> 
  2345.    (metaInfo :DIRMETAINFO)      ;  <--  
  2346.    )
  2347.  
  2348. ; DirGetDNodeMetaInfo: This call can be made to obtain
  2349. ; the DNodeMetaInfo for a given Packed RLI. Information returned
  2350. ; is 16 bytes of OPAQUE information about the DNode.
  2351.  
  2352. (defrecord DirGetDNodeMetaInfoPB 
  2353.    (qLink :POINTER)
  2354.    (reserved1 :SIGNED-LONG)
  2355.    (reserved2 :SIGNED-LONG)
  2356.    (ioCompletion :POINTER)
  2357.    (ioResult :SIGNED-INTEGER)
  2358.    (saveA5 :SIGNED-LONG)
  2359.    (reqCode :SIGNED-INTEGER)
  2360.    (reserved (:ARRAY :SIGNED-LONG 2))
  2361.    (serverHint :ADDRBLOCK)
  2362.    (dsRefNum :SIGNED-INTEGER)
  2363.    (callID :SIGNED-LONG)
  2364.    (identity :SIGNED-LONG)
  2365.    (gReserved1 :SIGNED-LONG)
  2366.    (gReserved2 :SIGNED-LONG)
  2367.    (gReserved3 :SIGNED-LONG)
  2368.    (clientData :SIGNED-LONG)
  2369.  
  2370.    (pRLI (:POINTER :PACKEDRLI)) ;   --> 
  2371.    (metaInfo :DIRMETAINFO)      ;  <--  
  2372.    )
  2373.  
  2374. ; EnumerateDirectoriesGet:
  2375. ; A user can enumerate all the directories installed. This includes installed
  2376. ; ADAP and DSAM directories. The user can specify a signature as input to restrict
  2377. ; the results. kDirADAPKind will return only ADAP directories, kDirDSAMKind
  2378. ; will return all DSAM directories. kDirAllKinds will get both ADAP & DSAM directories.
  2379. ; A specific signature (e.g. X.500) may be used to get directories with an X.500 signature.
  2380. ; The information for each directory returned will have directoryName, discriminator and features.
  2381. ; If the user receives 'noErr' or 'kOCEMoreData', the buffer will contain valid results. A user
  2382. ; can extract the results in the 'getBuffer' by making an DirEnumerateDirectories call.
  2383. ; If 'kOCEMoreData' is received, the user can continue enumeration by using the last directory and
  2384. ; discriminator as startingDirectoryName and staringDirDiscriminator in the next call.
  2385. ; If 'includeStartingPoint' is true and a starting point is specified,
  2386. ; the staring point will be returned in the result. If false, it is not included.
  2387.  
  2388. (defrecord DirEnumerateDirectoriesGetPB 
  2389.    (qLink :POINTER)
  2390.    (reserved1 :SIGNED-LONG)
  2391.    (reserved2 :SIGNED-LONG)
  2392.    (ioCompletion :POINTER)
  2393.    (ioResult :SIGNED-INTEGER)
  2394.    (saveA5 :SIGNED-LONG)
  2395.    (reqCode :SIGNED-INTEGER)
  2396.    (reserved (:ARRAY :SIGNED-LONG 2))
  2397.    (serverHint :ADDRBLOCK)
  2398.    (dsRefNum :SIGNED-INTEGER)
  2399.    (callID :SIGNED-LONG)
  2400.    (identity :SIGNED-LONG)
  2401.    (gReserved1 :SIGNED-LONG)
  2402.    (gReserved2 :SIGNED-LONG)
  2403.    (gReserved3 :SIGNED-LONG)
  2404.    (clientData :SIGNED-LONG)
  2405.  
  2406.    (directoryKind :SIGNED-LONG) ;   --> enumerate directories bearing this signature 
  2407.    (startingDirectoryName (:POINTER :DIRECTORYNAME));   --> staring directory name 
  2408.    (startingDirDiscriminator :DIRDISCRIMINATOR);   --> staring directory discriminator 
  2409.    (eReserved :SIGNED-LONG)     ;   --  
  2410.    (fReserved :SIGNED-LONG)     ;   --  
  2411.    (gReserved :SIGNED-LONG)     ;   --  
  2412.    (hReserved :SIGNED-LONG)     ;   --  
  2413.  
  2414. ; ERROR!! Record field INCLUDESTARTINGPOINT declared PACKED BOOLEAN !
  2415.    (includeStartingPoint :BOOLEAN);   --> if true return the dir specified by starting point 
  2416.    (padByte :UNSIGNED-BYTE)
  2417.    (i1Reserved :SIGNED-INTEGER) ;   --  
  2418.    (getBuffer :POINTER)         ;   --> 
  2419.    (getBufferSize :SIGNED-LONG) ;   --> 
  2420.    )
  2421.  
  2422. (def-mactype :FOREACHDIRECTORY (find-mactype :POINTER))
  2423. ;  FUNCTION ForEachDirectory(clientData: long; dirName: DirectoryNamePtr;
  2424. ;         discriminator: DirDiscriminator; features: DirGestalt): BOOLEAN;
  2425.  
  2426. ; EnumerateDirectoriesParse:
  2427. ; The directory info returned in 'getBuffer' from the EnumerateDirectoriesGet call
  2428. ; can be extracted using the EnumerateDirectoriesParse call. 'eachDirectory' will
  2429. ; be called for each directory.
  2430. ; Returning true from any call-back will terminate the EnumerateDirectoriesParse call.
  2431. ; For synchronous calls, the call-back routine actually runs as part of the same thread
  2432. ; of execution as the thread that made the EnumerateDirectoriesParse call.  That means that the
  2433. ; same low-memory globals, A5, stack, etc. are in effect during the call-back
  2434. ; that were in effect when the call was made.  Because of this, the call-back
  2435. ; routine has the same restrictions as the caller of EnumerateDirectoriesParse:
  2436. ; if EnumerateDirectoriesParse was not called from interrupt level, then the call-
  2437. ; back routine can allocate memory. For asynchronous calls, call-back routine is
  2438. ; like a ioCompletion except that A5 will be preserved for the application.
  2439. ; eachDirectory will be called each time to return to the client a
  2440. ; DirectoryName, DirDiscriminator, and features for that directory.
  2441.  
  2442. (defrecord DirEnumerateDirectoriesParsePB 
  2443.    (qLink :POINTER)
  2444.    (reserved1 :SIGNED-LONG)
  2445.    (reserved2 :SIGNED-LONG)
  2446.    (ioCompletion :POINTER)
  2447.    (ioResult :SIGNED-INTEGER)
  2448.    (saveA5 :SIGNED-LONG)
  2449.    (reqCode :SIGNED-INTEGER)
  2450.    (reserved (:ARRAY :SIGNED-LONG 2))
  2451.    (serverHint :ADDRBLOCK)
  2452.    (dsRefNum :SIGNED-INTEGER)
  2453.    (callID :SIGNED-LONG)
  2454.    (identity :SIGNED-LONG)
  2455.    (gReserved1 :SIGNED-LONG)
  2456.    (gReserved2 :SIGNED-LONG)
  2457.    (gReserved3 :SIGNED-LONG)
  2458.    (clientData :SIGNED-LONG)
  2459.  
  2460.    (aReserved :SIGNED-LONG)     ;   --  
  2461.    (bReserved :SIGNED-LONG)     ;   --  
  2462.    (cReserved :SIGNED-LONG)     ;   --  
  2463.    (dReserved :SIGNED-LONG)     ;   --  
  2464.    (eachDirectory :POINTER)     ;   --> 
  2465.    (fReserved :SIGNED-LONG)     ;   --  
  2466.    (gReserved :SIGNED-LONG)     ;   --  
  2467.    (hReserved :SIGNED-LONG)     ;   --  
  2468.    (iReserved :SIGNED-LONG)     ;   --  
  2469.    (getBuffer :POINTER)         ;   --> 
  2470.    (getBufferSize :SIGNED-LONG) ;   --> 
  2471.    )
  2472.  
  2473. ; The Following five call are specific to ADAP Directories. Toolbox
  2474. ; remembers a list of directories across boots. If any directory service
  2475. ; call is intended for a ADAP directory, then it must be in the list.
  2476. ; In order for managing this list, A client (Probably DE will use these
  2477. ; calls.
  2478. ; DirAddADAPDirectoryPB: Add a new ADAP directory to the list.
  2479. ; DirRemoveADAPDirectory: Remove a ADAP directory from the list.
  2480. ; DirNetSearchADAPDirectoriesGet:   search an internet for adas directories.
  2481. ; DirNetSearchADAPDirectoriesParse: extract the results obtained NetSearchADAPDirectoriesGet.
  2482. ; DirFindADAPDirectoryByNetSearch: Find a specified directory through net search.
  2483.  
  2484. ; NetSearchADAPDirectoriesGet:
  2485. ; This call can be used to make a network wide search for finding ADAP directories.
  2486. ; This call will be supported only by 'ADAP' and involve highly expensive
  2487. ; network operations, so the user is advised to use utmost discretion before
  2488. ; making this call. The results will be collected in the 'getbuffer' and can be
  2489. ; extracted using NetSearchADAPDirectoriesParse call. The directoryName,
  2490. ; the directoryDiscriminator, features and serverHint (AppleTalk address for
  2491. ; a PathFinder serving that directory) are collected for each directory found
  2492. ; on the network. If buffer is too small to hold all the directories found on
  2493. ; the network, a 'kOCEMoreData' error will be returned.
  2494.  
  2495. (defrecord DirNetSearchADAPDirectoriesGetPB 
  2496.    (qLink :POINTER)
  2497.    (reserved1 :SIGNED-LONG)
  2498.    (reserved2 :SIGNED-LONG)
  2499.    (ioCompletion :POINTER)
  2500.    (ioResult :SIGNED-INTEGER)
  2501.    (saveA5 :SIGNED-LONG)
  2502.    (reqCode :SIGNED-INTEGER)
  2503.    (reserved (:ARRAY :SIGNED-LONG 2))
  2504.    (serverHint :ADDRBLOCK)
  2505.    (dsRefNum :SIGNED-INTEGER)
  2506.    (callID :SIGNED-LONG)
  2507.    (identity :SIGNED-LONG)
  2508.    (gReserved1 :SIGNED-LONG)
  2509.    (gReserved2 :SIGNED-LONG)
  2510.    (gReserved3 :SIGNED-LONG)
  2511.    (clientData :SIGNED-LONG)
  2512.  
  2513.    (getBuffer :POINTER)         ;   --> 
  2514.    (getBufferSize :SIGNED-LONG) ;   --> 
  2515.    (cReserved :SIGNED-LONG)     ;   --  
  2516.    )
  2517.  
  2518. (def-mactype :FOREACHADAPDIRECTORY (find-mactype :POINTER))
  2519. ;  FUNCTION ForEachADAPDirectory(
  2520. ;         clientData: long; dirName: DirectoryNamePtr;
  2521. ;         discriminator: DirDiscriminator; features: DirGestalt;
  2522. ;         serverHint: AddrBlock): BOOLEAN;
  2523.  
  2524. ; DirNetSearchADAPDirectoriesParse:
  2525. ; This call can be used to extract the results obtained in the 'getBuffer'.
  2526. ; The directoryName, directoryDiscriminator, features and
  2527. ; serverHint (AppleTalk address for a PathFinder serving that directory) are
  2528. ; returned in each call-back. These values may be used to make an
  2529. ; AddADAPDirectory call.
  2530. ; Returning TRUE from any call-back will terminate the NetSearchADAPDirectoriesParse request.
  2531. ; For synchronous calls, the call-back routine actually runs as part of the same thread
  2532. ; of execution as the thread that made the DirNetSearchADAPDirectoriesParse call. That means that the
  2533. ; same low-memory globals, A5, stack, etc. are in effect during the call-back
  2534. ; that were in effect when the call was made.  Because of this, the call-back
  2535. ; routine has the same restrictions as the caller of DirNetSearchADAPDirectoriesParse:
  2536. ; if DirNetSearchADAPDirectoriesParse was not called from interrupt level, then the call-
  2537. ; back routine can allocate memory. For asynchronous calls, call-back routine is
  2538. ; like a ioCompletion except that A5 will be preserved for the application.
  2539.  
  2540. (defrecord DirNetSearchADAPDirectoriesParsePB 
  2541.    (qLink :POINTER)
  2542.    (reserved1 :SIGNED-LONG)
  2543.    (reserved2 :SIGNED-LONG)
  2544.    (ioCompletion :POINTER)
  2545.    (ioResult :SIGNED-INTEGER)
  2546.    (saveA5 :SIGNED-LONG)
  2547.    (reqCode :SIGNED-INTEGER)
  2548.    (reserved (:ARRAY :SIGNED-LONG 2))
  2549.    (serverHint :ADDRBLOCK)
  2550.    (dsRefNum :SIGNED-INTEGER)
  2551.    (callID :SIGNED-LONG)
  2552.    (identity :SIGNED-LONG)
  2553.    (gReserved1 :SIGNED-LONG)
  2554.    (gReserved2 :SIGNED-LONG)
  2555.    (gReserved3 :SIGNED-LONG)
  2556.    (clientData :SIGNED-LONG)
  2557.  
  2558.    (getBuffer :POINTER)         ;   --> 
  2559.    (getBufferSize :SIGNED-LONG) ;   --> 
  2560.    (eachADAPDirectory :POINTER) ;   --> 
  2561.    )
  2562.  
  2563. ; DirFindADAPDirectoryByNetSearch:
  2564. ; This call can be used to make a network wide search to find an ADAP directory.
  2565. ; This call will be supported only by 'ADAP' and involves highly expensive
  2566. ; network operations, so the user is advised to use utmost discretion before
  2567. ; making this call. The directory is specified using directoryName and discriminator.
  2568. ; If 'addToOCESetup' is true, the directory will be automatically added to the setup
  2569. ; list and will be visible through the EnumerateDirectories call and also
  2570. ; also a creationID to the directoryRecord will be returned.
  2571. ; If this parameter is set to 'false', the directory will be added to temporary list
  2572. ; and will be available for making other directory service calls. The directories
  2573. ; which are not in the preference directory list will not be visible through the
  2574. ; EnumerateDirectories call.
  2575.  
  2576. (defrecord DirFindADAPDirectoryByNetSearchPB 
  2577.    (qLink :POINTER)
  2578.    (reserved1 :SIGNED-LONG)
  2579.    (reserved2 :SIGNED-LONG)
  2580.    (ioCompletion :POINTER)
  2581.    (ioResult :SIGNED-INTEGER)
  2582.    (saveA5 :SIGNED-LONG)
  2583.    (reqCode :SIGNED-INTEGER)
  2584.    (reserved (:ARRAY :SIGNED-LONG 2))
  2585.    (serverHint :ADDRBLOCK)
  2586.    (dsRefNum :SIGNED-INTEGER)
  2587.    (callID :SIGNED-LONG)
  2588.    (identity :SIGNED-LONG)
  2589.    (gReserved1 :SIGNED-LONG)
  2590.    (gReserved2 :SIGNED-LONG)
  2591.    (gReserved3 :SIGNED-LONG)
  2592.    (clientData :SIGNED-LONG)
  2593.  
  2594.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  2595.    (discriminator :DIRDISCRIMINATOR);   --> discriminate between dup dir names 
  2596.  
  2597. ; ERROR!! Record field ADDTOOCESETUP declared PACKED BOOLEAN !
  2598.    (addToOCESetup :BOOLEAN)     ;   --> add this directory to OCE Setup List 
  2599.    (padByte :UNSIGNED-BYTE)
  2600.    (directoryRecordCID :CREATIONID);  <--  creationID for the directory record 
  2601.    )
  2602.  
  2603. ; DirAddADAPDirectory:
  2604. ; The directory specified by 'directoryName' and 'discriminator' will be
  2605. ; added to the list of directories maintained by the Toolbox. Once added,
  2606. ; the directory is available across boots, until the directory is removed
  2607. ; explicitly through a DirRemoveADAPDirectory call.
  2608. ; If 'serverHint' is not nil, the address provided will be used
  2609. ; to contact a PathFinder for the directory specified.
  2610. ; If 'serverHint' is nil or does not point to a valid PathFinder server
  2611. ; for that directory, this call will fail.
  2612. ; If 'addToOCESetup' is true, the directory will be automatically added to the setup
  2613. ; directory list and will be visible through EnumerateDirectories calls and
  2614. ; also a creationID to the directoryRecord will be returned.
  2615. ; If this parameter is set to 'false', directory will be added to temprary list
  2616. ; and will be available for making other directory service calls. The directories
  2617. ; which are not in the setup  list will not be visible through
  2618. ; EnumerateDirectories call.
  2619.  
  2620. (defrecord DirAddADAPDirectoryPB 
  2621.    (qLink :POINTER)
  2622.    (reserved1 :SIGNED-LONG)
  2623.    (reserved2 :SIGNED-LONG)
  2624.    (ioCompletion :POINTER)
  2625.    (ioResult :SIGNED-INTEGER)
  2626.    (saveA5 :SIGNED-LONG)
  2627.    (reqCode :SIGNED-INTEGER)
  2628.    (reserved (:ARRAY :SIGNED-LONG 2))
  2629.    (serverHint :ADDRBLOCK)
  2630.    (dsRefNum :SIGNED-INTEGER)
  2631.    (callID :SIGNED-LONG)
  2632.    (identity :SIGNED-LONG)
  2633.    (gReserved1 :SIGNED-LONG)
  2634.    (gReserved2 :SIGNED-LONG)
  2635.    (gReserved3 :SIGNED-LONG)
  2636.    (clientData :SIGNED-LONG)
  2637.  
  2638.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  2639.    (discriminator :DIRDISCRIMINATOR);   --> discriminate between dup dir names 
  2640.  
  2641. ; ERROR!! Record field ADDTOOCESETUP declared PACKED BOOLEAN !
  2642.    (addToOCESetup :BOOLEAN)     ;   --> add this directory to OCE Setup 
  2643.    (padByte :UNSIGNED-BYTE)
  2644.    (directoryRecordCID :CREATIONID);  <--  creationID for the directory record 
  2645.    )
  2646.  
  2647. ; GetDirectoryInfo:
  2648. ; DirGetDirectoryInfo will do:
  2649. ; If a 'dsRefNum' is non-Zero, the directory information for
  2650. ;     the corresponding  PAB will be  returned.
  2651. ;  If 'dsRefNum' is zero and 'serverHint' is non-zero, If the
  2652. ;  'serverHint' points to a valid ADAP Directory Server(Finder: Path),
  2653. ;  the directory information (i.e. directoryName, discriminator, features)
  2654. ;  for that directory will be returned.
  2655. ;     If a  vlid directory name and discriminator are provided
  2656. ;     features (Set of capability flags) for that directory will be returned.
  2657.  
  2658. (defrecord DirGetDirectoryInfoPB 
  2659.    (qLink :POINTER)
  2660.    (reserved1 :SIGNED-LONG)
  2661.    (reserved2 :SIGNED-LONG)
  2662.    (ioCompletion :POINTER)
  2663.    (ioResult :SIGNED-INTEGER)
  2664.    (saveA5 :SIGNED-LONG)
  2665.    (reqCode :SIGNED-INTEGER)
  2666.    (reserved (:ARRAY :SIGNED-LONG 2))
  2667.    (serverHint :ADDRBLOCK)
  2668.    (dsRefNum :SIGNED-INTEGER)
  2669.    (callID :SIGNED-LONG)
  2670.    (identity :SIGNED-LONG)
  2671.    (gReserved1 :SIGNED-LONG)
  2672.    (gReserved2 :SIGNED-LONG)
  2673.    (gReserved3 :SIGNED-LONG)
  2674.    (clientData :SIGNED-LONG)
  2675.  
  2676.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  2677.    (discriminator :DIRDISCRIMINATOR);  <--> descriminate between dup dir names 
  2678.    (features :SIGNED-LONG)      ;  <--  capability bit flags 
  2679.    )
  2680.  
  2681. ; pass kThisRecordOwnerMask, kFriendsMask, kAuthenticatedInDNodeMask, kAuthenticatedInDirectoryMask,
  2682. ; kGuestMask, or kMeMask to this routine, and it will return a pointer to a
  2683. ; DSSpec that can be used in the Get or Set Access Controls calls.
  2684.  
  2685.  
  2686. (deftrap _ocegetaccesscontroldsspec ((categorybitmask :signed-long))
  2687.    (:stack (:pointer :dsspec))
  2688.    (:stack-trap #xAA5C :d0 837 categorybitmask))
  2689.  
  2690. ;     Note on Access Controls:
  2691. ;     Access control is based on a list model.
  2692. ;     You can add Access Controls to a dsObject through set calls.
  2693. ;     You can get access controls list which gives dsObject and accMask for each dsObject.
  2694. ;     GetAccessControl can be limited to currently supplied identity by setting forCurrentUserOnly.
  2695. ;     There are special DSObjects are defined in ADASTypes.h for each of the category
  2696. ;     supported in ADAS Directories. (kOwner, kFriends, kAuthenticatedToCluster,
  2697. ;     kAuthenticatedToDirectory, kGuest) and DUGetActlDSSpec call can be used
  2698. ;     to obtain appropraiate DSSpec before making set calls to ADAS directories.
  2699.  
  2700. ;     GetDNodeAccessControlGet:
  2701. ;     This call can be done to get back access control list for a DNode.
  2702. ;     pRLI -> RLI of the DNode whose access control list is sought
  2703. ;     curUserAccMask -> If this is 'true', Access controls for the user specified by
  2704. ;                       the identity parameter will be returned other wise entire list
  2705. ;                       will be returned.
  2706. ;     startingDsObj  -> If this is not nil, list should be started after this object.
  2707. ;     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  2708. ;                               results.
  2709. ;     The results will be collected in the 'getBuffer' supplied by the user.
  2710. ;     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  2711. ;     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  2712. ;     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  2713. ;     Results returned for each DSObject will contain DSSpecPtr and three sets of access mask.
  2714.  
  2715. (defrecord DirGetDNodeAccessControlGetPB 
  2716.    (qLink :POINTER)
  2717.    (reserved1 :SIGNED-LONG)
  2718.    (reserved2 :SIGNED-LONG)
  2719.    (ioCompletion :POINTER)
  2720.    (ioResult :SIGNED-INTEGER)
  2721.    (saveA5 :SIGNED-LONG)
  2722.    (reqCode :SIGNED-INTEGER)
  2723.    (reserved (:ARRAY :SIGNED-LONG 2))
  2724.    (serverHint :ADDRBLOCK)
  2725.    (dsRefNum :SIGNED-INTEGER)
  2726.    (callID :SIGNED-LONG)
  2727.    (identity :SIGNED-LONG)
  2728.    (gReserved1 :SIGNED-LONG)
  2729.    (gReserved2 :SIGNED-LONG)
  2730.    (gReserved3 :SIGNED-LONG)
  2731.    (clientData :SIGNED-LONG)
  2732.  
  2733.    (pRLI (:POINTER :PACKEDRLI)) ;   -> RLI of the cluster whose access control list is sought  
  2734.    (bReserved :SIGNED-LONG)     ;   -- unused 
  2735.    (cReserved :SIGNED-LONG)     ;   -- unused 
  2736.    (dReserved :SIGNED-LONG)     ;   -- unused 
  2737.    (eResreved :SIGNED-LONG)     ;  --> 
  2738.    (forCurrentUserOnly :BOOLEAN);  -->  
  2739.    (startingPoint (:POINTER :DSSPEC));  --> starting Point 
  2740.    (includeStartingPoint :BOOLEAN);   -> if true return the DsObject
  2741. ;                                                 specified in starting point 
  2742.    (getBuffer :POINTER)         ;     -> 
  2743.    (getBufferSize :SIGNED-LONG) ;   -> 
  2744.  
  2745.    )
  2746.  
  2747. ;  The Access Control call-back function is defined as follows: 
  2748. (def-mactype :FOREACHDNODEACCESSCONTROL (find-mactype :POINTER))
  2749. ;  FUNCTION ForEachDNodeAccessControl(
  2750. ;         clientData: long;
  2751. ;         dsObj: DSSpec; activeDnodeAccMask: AccessMask;
  2752. ;         defaultRecordAccMask: AccessMask;
  2753. ;         defaultAttributeAccMask: AccessMask): BOOLEAN;
  2754.  
  2755. ;     GetDNodeAccessControlParse:
  2756. ;     After an GetDNodeAccessControlGet call has completed,
  2757. ;     call GetDNodeAccessControlParse to parse through the buffer that
  2758. ;     that was filled in GetDNodeAccessControlGet.
  2759. ;     'eachObject' will be called each time to return to the client a
  2760. ;     DsObject and a set of three accMasks (three LONGINT words) for that object.
  2761. ;     Acceesmasks returned apply to the dsObject in the callback :
  2762. ;     1. Currently Active Access mask for the specified DNode.
  2763. ;     2. Default Access mask for any Record in the DNode
  2764. ;     3. Default Access mask for any Attribute in the DNode
  2765. ;     The clientData parameter that you pass in the parameter block will be passed
  2766. ;     to 'eachObject'.  You are free to put anything in clientData - it is intended
  2767. ;     to allow you some way to match the call-back to the original call (example: for; you make more then one aysynchronous GetDNodeAccessControlGet calls and you want to
  2768. ;     associate returned results in some way).
  2769. ;     The client should return FALSE from 'eachObject' to continue
  2770. ;     processing of the GetDNodeAccessControlParse request.  Returning TRUE will
  2771. ;     terminate the GetDNodeAccessControlParse request.
  2772. ;     For synchronous calls, the call-back routine actually runs as part of the same thread
  2773. ;     of execution as the thread that made the GetDNodeAccessControlParse call.  That means that the
  2774. ;     same low-memory globals, A5, stack, etc. are in effect during the call-back
  2775. ;     that were in effect when the call was made.  Because of this, the call-back
  2776. ;     routine has the same restrictions as the caller of GetDNodeAccessControlParse:
  2777. ;     if GetDNodeAccessControlParse was not called from interrupt level, then the call-
  2778. ;     back routine can allocate memory. For asynchronous calls, call-back routine is
  2779. ;     like a ioCompletion except that A5 will be preserved for the application.
  2780.  
  2781. (defrecord DirGetDNodeAccessControlParsePB 
  2782.    (qLink :POINTER)
  2783.    (reserved1 :SIGNED-LONG)
  2784.    (reserved2 :SIGNED-LONG)
  2785.    (ioCompletion :POINTER)
  2786.    (ioResult :SIGNED-INTEGER)
  2787.    (saveA5 :SIGNED-LONG)
  2788.    (reqCode :SIGNED-INTEGER)
  2789.    (reserved (:ARRAY :SIGNED-LONG 2))
  2790.    (serverHint :ADDRBLOCK)
  2791.    (dsRefNum :SIGNED-INTEGER)
  2792.    (callID :SIGNED-LONG)
  2793.    (identity :SIGNED-LONG)
  2794.    (gReserved1 :SIGNED-LONG)
  2795.    (gReserved2 :SIGNED-LONG)
  2796.    (gReserved3 :SIGNED-LONG)
  2797.    (clientData :SIGNED-LONG)
  2798.  
  2799.    (pRLI (:POINTER :PACKEDRLI)) ;   -> RLI of the cluster  
  2800.    (bReserved :SIGNED-LONG)     ;   -- unused 
  2801.    (cReserved :SIGNED-LONG)     ;   -- unused 
  2802.    (dReserved :SIGNED-LONG)     ;   -- unused 
  2803.    (eachObject :POINTER)        ;  --> 
  2804.    (forCurrentUserOnly :BOOLEAN);  -->  
  2805.    (startingPoint (:POINTER :DSSPEC));  --> starting Point 
  2806.    (includeStartingPoint :BOOLEAN);   -> if true return the record
  2807. ;                                                 specified in starting point 
  2808.    (getBuffer :POINTER)         ;     -> 
  2809.    (getBufferSize :SIGNED-LONG) ;   -> 
  2810.    )
  2811.  
  2812. ;     GetRecordAccessControlGet:
  2813. ;     This call can be done to get back access control list for a RecordID.
  2814. ;     aRecord -> RecordID to which access control list is sought
  2815. ;     curUserAccMask -> If this is 'true', Access controls for the user specified by
  2816. ;                       the identity parameter will be returned other wise entire list
  2817. ;                       will be returned.
  2818. ;     startingDsObj  -> If this is not nil, list should be started after this object.
  2819. ;     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  2820. ;                               results.
  2821. ;     The results will be collected in the 'getBuffer' supplied by the user.
  2822. ;     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  2823. ;     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  2824. ;     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  2825. ;     Results returned for each DSObject will contain DSSpecPtr and accMask.
  2826.  
  2827. (defrecord DirGetRecordAccessControlGetPB 
  2828.    (qLink :POINTER)
  2829.    (reserved1 :SIGNED-LONG)
  2830.    (reserved2 :SIGNED-LONG)
  2831.    (ioCompletion :POINTER)
  2832.    (ioResult :SIGNED-INTEGER)
  2833.    (saveA5 :SIGNED-LONG)
  2834.    (reqCode :SIGNED-INTEGER)
  2835.    (reserved (:ARRAY :SIGNED-LONG 2))
  2836.    (serverHint :ADDRBLOCK)
  2837.    (dsRefNum :SIGNED-INTEGER)
  2838.    (callID :SIGNED-LONG)
  2839.    (identity :SIGNED-LONG)
  2840.    (gReserved1 :SIGNED-LONG)
  2841.    (gReserved2 :SIGNED-LONG)
  2842.    (gReserved3 :SIGNED-LONG)
  2843.    (clientData :SIGNED-LONG)
  2844.  
  2845.    (aRecord (:POINTER :RECORDID));   -> RecordID to which access control list is sought list is sought  
  2846.    (bReserved :SIGNED-LONG)     ;   -- unused 
  2847.    (cReserved :SIGNED-LONG)     ;   -- unused 
  2848.    (dReserved :SIGNED-LONG)     ;   -- unused 
  2849.    (eResreved :SIGNED-LONG)     ;  --> 
  2850.    (forCurrentUserOnly :BOOLEAN);  -->  
  2851.    (startingPoint (:POINTER :DSSPEC));  --> starting Point 
  2852.    (includeStartingPoint :BOOLEAN);   -> if true return the DsObject
  2853. ;                                                 specified in starting point 
  2854.    (getBuffer :POINTER)         ;     -> 
  2855.    (getBufferSize :SIGNED-LONG) ;   -> 
  2856.    )
  2857.  
  2858. ;  The Access Control call-back function is defined as follows: 
  2859. (def-mactype :FOREACHRECORDACCESSCONTROL (find-mactype :POINTER))
  2860. ;  FUNCTION ForEachRecordAccessControl(clientData: long;
  2861. ;         dsObj: DSSpec; activeDnodeAccMask: AccessMask;
  2862. ;         activeRecordAccMask: AccessMask;
  2863. ;         defaultAttributeAccMask: AccessMask): BOOLEAN;
  2864.  
  2865. ;     GetRecordAccessControlParse:
  2866. ;     After an GetRecordAccessControlGet call has completed,
  2867. ;     call GetRecordAccessControlParse to parse through the buffer that
  2868. ;     that was filled in GetRecordAccessControlGet.
  2869. ;     'eachObject' will be called each time to return to the client a
  2870. ;     DsObject and a set of three accMasks (three LONGINT words) for that object.
  2871. ;     Acceesmasks returned apply to the dsObject in the callback :
  2872. ;     1. Active Access mask for the DNode Containing the Record.
  2873. ;     2. Active Access mask for the Record specified.
  2874. ;     3. Defualt Access mask for Attributes in the record.
  2875. ;     The clientData parameter that you pass in the parameter block will be passed
  2876. ;     to 'eachObject'.  You are free to put anything in clientData - it is intended
  2877. ;     to allow you some way to match the call-back to the original call (example: for; you make more then one aysynchronous GetRecordAccessControlGet calls and you want to
  2878. ;     associate returned results in some way).
  2879. ;     The client should return FALSE from 'eachObject' to continue
  2880. ;     processing of the GetRecordAccessControlParse request.  Returning TRUE will
  2881. ;     terminate the GetRecordAccessControlParse request.
  2882. ;     For synchronous calls, the call-back routine actually runs as part of the same thread
  2883. ;     of execution as the thread that made the GetRecordAccessControlParse call.  That means that the
  2884. ;     same low-memory globals, A5, stack, etc. are in effect during the call-back
  2885. ;     that were in effect when the call was made.  Because of this, the call-back
  2886. ;     routine has the same restrictions as the caller of GetRecordAccessControlParse:
  2887. ;     if GetRecordAccessControlParse was not called from interrupt level, then the call-
  2888. ;     back routine can allocate memory. For asynchronous calls, call-back routine is
  2889. ;     like a ioCompletion except that A5 will be preserved for the application.
  2890.  
  2891. (defrecord DirGetRecordAccessControlParsePB 
  2892.    (qLink :POINTER)
  2893.    (reserved1 :SIGNED-LONG)
  2894.    (reserved2 :SIGNED-LONG)
  2895.    (ioCompletion :POINTER)
  2896.    (ioResult :SIGNED-INTEGER)
  2897.    (saveA5 :SIGNED-LONG)
  2898.    (reqCode :SIGNED-INTEGER)
  2899.    (reserved (:ARRAY :SIGNED-LONG 2))
  2900.    (serverHint :ADDRBLOCK)
  2901.    (dsRefNum :SIGNED-INTEGER)
  2902.    (callID :SIGNED-LONG)
  2903.    (identity :SIGNED-LONG)
  2904.    (gReserved1 :SIGNED-LONG)
  2905.    (gReserved2 :SIGNED-LONG)
  2906.    (gReserved3 :SIGNED-LONG)
  2907.    (clientData :SIGNED-LONG)
  2908.  
  2909.    (aRecord (:POINTER :RECORDID));   -> RecordID to which access control list is sought list is sought  
  2910.    (bReserved :SIGNED-LONG)     ;   -- unused 
  2911.    (cReserved :SIGNED-LONG)     ;   -- unused 
  2912.    (dReserved :SIGNED-LONG)     ;   -- unused 
  2913.    (eachObject :POINTER)        ;  --> 
  2914.    (forCurrentUserOnly :BOOLEAN);  -->  
  2915.    (startingPoint (:POINTER :DSSPEC));  --> starting Point 
  2916.    (includeStartingPoint :BOOLEAN);   -> if true return the record
  2917. ;                                                         specified in starting point 
  2918.    (getBuffer :POINTER)         ;     -> 
  2919.    (getBufferSize :SIGNED-LONG) ;   -> 
  2920.    )
  2921.  
  2922. ;     GetAttributeAccessControlGet:
  2923. ;     This call can be done to get back access control list for a attributeType with in a RecordID.
  2924. ;     aRecord -> RecordID to which access control list is sought
  2925. ;     aType    -> Attribute Type to which access controls are sought
  2926. ;     curUserAccMask -> If this is 'true', Access controls for the user specified by
  2927. ;                       the identity parameter will be returned other wise entire list
  2928. ;                       will be returned.
  2929. ;     startingDsObj  -> If this is not nil, list should be started after this object.
  2930. ;     startingPointInclusive -> If staringDsObj is specified, include that in the returned
  2931. ;                               results.
  2932. ;     The results will be collected in the 'getBuffer' supplied by the user.
  2933. ;     If buffer can not hold all the data returned 'daMoreData' error will be returned.
  2934. ;     If user receives 'noErr' or 'daMoreData', buffer will contain valid results. A user
  2935. ;     can extract the results in the 'getBuffer' by making 'DsGetDNodeAccessControlParse' call.
  2936. ;     Results returned for each DSObject will contain DSSpecPtr and accMask.
  2937.  
  2938. (defrecord DirGetAttributeAccessControlGetPB 
  2939.    (qLink :POINTER)
  2940.    (reserved1 :SIGNED-LONG)
  2941.    (reserved2 :SIGNED-LONG)
  2942.    (ioCompletion :POINTER)
  2943.    (ioResult :SIGNED-INTEGER)
  2944.    (saveA5 :SIGNED-LONG)
  2945.    (reqCode :SIGNED-INTEGER)
  2946.    (reserved (:ARRAY :SIGNED-LONG 2))
  2947.    (serverHint :ADDRBLOCK)
  2948.    (dsRefNum :SIGNED-INTEGER)
  2949.    (callID :SIGNED-LONG)
  2950.    (identity :SIGNED-LONG)
  2951.    (gReserved1 :SIGNED-LONG)
  2952.    (gReserved2 :SIGNED-LONG)
  2953.    (gReserved3 :SIGNED-LONG)
  2954.    (clientData :SIGNED-LONG)
  2955.  
  2956.    (aRecord (:POINTER :RECORDID));   -> RecordID to which access control list is sought list is sought  
  2957.    (aType (:POINTER :ATTRIBUTETYPE));   -> Attribute Type to which access controls are sought          
  2958.    (cReserved :SIGNED-LONG)     ;   -- unused 
  2959.    (dReserved :SIGNED-LONG)     ;   -- unused 
  2960.    (eResreved :SIGNED-LONG)     ;  --> 
  2961.    (forCurrentUserOnly :BOOLEAN);  -->  
  2962.    (startingPoint (:POINTER :DSSPEC));  --> starting Point 
  2963.    (includeStartingPoint :BOOLEAN);   -> if true return the DsObject
  2964. ;                                                                 specified in starting point 
  2965.    (getBuffer :POINTER)         ;     -> 
  2966.    (getBufferSize :SIGNED-LONG) ;   -> 
  2967.    )
  2968.  
  2969. ;  The Access Control call-back function is defined as follows: 
  2970. (def-mactype :FOREACHATTRIBUTEACCESSCONTROL (find-mactype :POINTER))
  2971. ;  FUNCTION ForEachAttributeAccessControl(clientData: long;
  2972. ;         dsObj: DSSpec; activeDnodeAccMask: AccessMask;
  2973. ;         activeRecordAccMask: AccessMask;
  2974. ;         activeAttributeAccMask: AccessMask): BOOLEAN;
  2975.  
  2976. ;     GetAttributeAccessControlParse:
  2977. ;     After an GetAttributeAccessControlGet call has completed,
  2978. ;     call GetAttributeAccessControlParse to parse through the buffer that
  2979. ;     that was filled in GetAttributeAccessControlGet.
  2980. ;     'eachObject' will be called each time to return to the client a
  2981. ;     DsObject and a set of three accMasks (three LONGINT words) for that object.
  2982. ;     Acceesmasks returned apply to the dsObject in the callback :
  2983. ;     1. Active Access mask for the DNode Containing the Attribute.
  2984. ;     2. Active Access mask for the Record in the Containing the Attribute.
  2985. ;     3. Active Access mask for the specified Attribute.
  2986. ;     The clientData parameter that you pass in the parameter block will be passed
  2987. ;     to 'eachObject'.  You are free to put anything in clientData - it is intended
  2988. ;     to allow you some way to match the call-back to the original call (example: for; you make more then one aysynchronous GetAttributeAccessControlGet calls and you want to
  2989. ;     associate returned results in some way).
  2990. ;     The client should return FALSE from 'eachObject' to continue
  2991. ;     processing of the GetAttributeAccessControlParse request.  Returning TRUE will
  2992. ;     terminate the GetAttributeAccessControlParse request.
  2993. ;     For synchronous calls, the call-back routine actually runs as part of the same thread
  2994. ;     of execution as the thread that made the GetAttributeAccessControlParse call.  That means that the
  2995. ;     same low-memory globals, A5, stack, etc. are in effect during the call-back
  2996. ;     that were in effect when the call was made.  Because of this, the call-back
  2997. ;     routine has the same restrictions as the caller of GetAttributeAccessControlParse:
  2998. ;     if GetAttributeAccessControlParse was not called from interrupt level, then the call-
  2999. ;     back routine can allocate memory. For asynchronous calls, call-back routine is
  3000. ;     like a ioCompletion except that A5 will be preserved for the application.
  3001.  
  3002. (defrecord DirGetAttributeAccessControlParsePB 
  3003.    (qLink :POINTER)
  3004.    (reserved1 :SIGNED-LONG)
  3005.    (reserved2 :SIGNED-LONG)
  3006.    (ioCompletion :POINTER)
  3007.    (ioResult :SIGNED-INTEGER)
  3008.    (saveA5 :SIGNED-LONG)
  3009.    (reqCode :SIGNED-INTEGER)
  3010.    (reserved (:ARRAY :SIGNED-LONG 2))
  3011.    (serverHint :ADDRBLOCK)
  3012.    (dsRefNum :SIGNED-INTEGER)
  3013.    (callID :SIGNED-LONG)
  3014.    (identity :SIGNED-LONG)
  3015.    (gReserved1 :SIGNED-LONG)
  3016.    (gReserved2 :SIGNED-LONG)
  3017.    (gReserved3 :SIGNED-LONG)
  3018.    (clientData :SIGNED-LONG)
  3019.  
  3020.    (aRecord (:POINTER :RECORDID));   -> RecordID to which access control list is sought list is sought  
  3021.    (aType (:POINTER :ATTRIBUTETYPE));   -> Attribute Type to which access controls are sought          
  3022.    (cReserved :SIGNED-LONG)     ;   -- unused 
  3023.    (dReserved :SIGNED-LONG)     ;   -- unused 
  3024.    (eachObject :POINTER)        ;  --> 
  3025.    (forCurrentUserOnly :BOOLEAN);  -->  
  3026.    (startingPoint (:POINTER :DSSPEC));  --> starting Point 
  3027.    (includeStartingPoint :BOOLEAN);   -> if true return the record
  3028. ;                                                         specified in starting point 
  3029.    (getBuffer :POINTER)         ;     -> 
  3030.    (getBufferSize :SIGNED-LONG) ;   -> 
  3031.    )
  3032.  
  3033. ; MapPathNameToDNodeNumber:
  3034. ; This call maps a given PathName within a directory to its DNodeNumber.
  3035.  
  3036. (defrecord DirMapPathNameToDNodeNumberPB 
  3037.    (qLink :POINTER)
  3038.    (reserved1 :SIGNED-LONG)
  3039.    (reserved2 :SIGNED-LONG)
  3040.    (ioCompletion :POINTER)
  3041.    (ioResult :SIGNED-INTEGER)
  3042.    (saveA5 :SIGNED-LONG)
  3043.    (reqCode :SIGNED-INTEGER)
  3044.    (reserved (:ARRAY :SIGNED-LONG 2))
  3045.    (serverHint :ADDRBLOCK)
  3046.    (dsRefNum :SIGNED-INTEGER)
  3047.    (callID :SIGNED-LONG)
  3048.    (identity :SIGNED-LONG)
  3049.    (gReserved1 :SIGNED-LONG)
  3050.    (gReserved2 :SIGNED-LONG)
  3051.    (gReserved3 :SIGNED-LONG)
  3052.    (clientData :SIGNED-LONG)
  3053.  
  3054.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  3055.    (discriminator :DIRDISCRIMINATOR);   --> discriminator 
  3056.    (dNodeNumber :SIGNED-LONG)   ;  <--  dNodenumber to the path 
  3057.    (path (:POINTER :PACKEDPATHNAME));   --> Path Name to be mapped 
  3058.    )
  3059.  
  3060. ; PathName in the path field will be mapped to the cooresponding dNodeNumber and
  3061. ; returned in the DNodeNumber field. directoryName and descriminator Fields are
  3062. ; ignored. DSRefNum is used to identify the directory.
  3063.  
  3064. ; MapDNodeNumberToPathName:
  3065. ; This call will map a given DNodeNumber with in a directory to the
  3066. ; corresponding PathName.
  3067.  
  3068. (defrecord DirMapDNodeNumberToPathNamePB 
  3069.    (qLink :POINTER)
  3070.    (reserved1 :SIGNED-LONG)
  3071.    (reserved2 :SIGNED-LONG)
  3072.    (ioCompletion :POINTER)
  3073.    (ioResult :SIGNED-INTEGER)
  3074.    (saveA5 :SIGNED-LONG)
  3075.    (reqCode :SIGNED-INTEGER)
  3076.    (reserved (:ARRAY :SIGNED-LONG 2))
  3077.    (serverHint :ADDRBLOCK)
  3078.    (dsRefNum :SIGNED-INTEGER)
  3079.    (callID :SIGNED-LONG)
  3080.    (identity :SIGNED-LONG)
  3081.    (gReserved1 :SIGNED-LONG)
  3082.    (gReserved2 :SIGNED-LONG)
  3083.    (gReserved3 :SIGNED-LONG)
  3084.    (clientData :SIGNED-LONG)
  3085.  
  3086.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  3087.    (discriminator :DIRDISCRIMINATOR);   --> discriminator 
  3088.    (dNodeNumber :SIGNED-LONG)   ;   --> dNodenumber to be mapped 
  3089.    (path (:POINTER :PACKEDPATHNAME));  <--  Packed Path Name returned 
  3090.    (lengthOfPathName :SIGNED-INTEGER);   --> length of packed pathName structure
  3091.    )
  3092.  
  3093. ; dNodeNumber in the DNodeNumber field will be mapped to the cooresponding
  3094. ; pathName and returned in the PackedPathName field.
  3095. ; lengthOfPathName is to be set the length of pathName structure.
  3096. ; If length of PackedPathName is larger then the lengthOfPathName, kOCEMoreData
  3097. ; OSErr will be returned.
  3098.  
  3099. ; GetLocalNetworkSpec:
  3100. ; This call will return the Local NetworkSpec. Client should supply
  3101. ; an RString big enough to hold the NetworkSpec.
  3102.  
  3103. (defrecord DirGetLocalNetworkSpecPB 
  3104.    (qLink :POINTER)
  3105.    (reserved1 :SIGNED-LONG)
  3106.    (reserved2 :SIGNED-LONG)
  3107.    (ioCompletion :POINTER)
  3108.    (ioResult :SIGNED-INTEGER)
  3109.    (saveA5 :SIGNED-LONG)
  3110.    (reqCode :SIGNED-INTEGER)
  3111.    (reserved (:ARRAY :SIGNED-LONG 2))
  3112.    (serverHint :ADDRBLOCK)
  3113.    (dsRefNum :SIGNED-INTEGER)
  3114.    (callID :SIGNED-LONG)
  3115.    (identity :SIGNED-LONG)
  3116.    (gReserved1 :SIGNED-LONG)
  3117.    (gReserved2 :SIGNED-LONG)
  3118.    (gReserved3 :SIGNED-LONG)
  3119.    (clientData :SIGNED-LONG)
  3120.  
  3121.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  3122.    (discriminator :DIRDISCRIMINATOR);   --> discriminator 
  3123.    (networkSpec (:POINTER :NETWORKSPEC));  <--  NetworkSpec 
  3124.    )
  3125.  
  3126. ; PathName in the path field must be set to nil. internetName should be large
  3127. ; enough to hold the internetName. InterNetname returned indicates path finder's
  3128. ; local internet (configured by administrator).
  3129.  
  3130. ; GetDNodeInfo:
  3131. ; This call will return the information (internetName and descriptor)
  3132. ; for the given RLI of a DNode.
  3133.  
  3134. (defrecord DirGetDNodeInfoPB 
  3135.    (qLink :POINTER)
  3136.    (reserved1 :SIGNED-LONG)
  3137.    (reserved2 :SIGNED-LONG)
  3138.    (ioCompletion :POINTER)
  3139.    (ioResult :SIGNED-INTEGER)
  3140.    (saveA5 :SIGNED-LONG)
  3141.    (reqCode :SIGNED-INTEGER)
  3142.    (reserved (:ARRAY :SIGNED-LONG 2))
  3143.    (serverHint :ADDRBLOCK)
  3144.    (dsRefNum :SIGNED-INTEGER)
  3145.    (callID :SIGNED-LONG)
  3146.    (identity :SIGNED-LONG)
  3147.    (gReserved1 :SIGNED-LONG)
  3148.    (gReserved2 :SIGNED-LONG)
  3149.    (gReserved3 :SIGNED-LONG)
  3150.    (clientData :SIGNED-LONG)
  3151.  
  3152.    (pRLI (:POINTER :PACKEDRLI)) ;   --> packed RLI whose info is requested 
  3153.    (descriptor :SIGNED-LONG)    ;  <--  dNode descriptor 
  3154.    (networkSpec (:POINTER :NETWORKSPEC));  <--  cluster's networkSpec if kIsCluster 
  3155.    )
  3156.  
  3157. ; If DnodeNumber is set to a non zero value, path should be set to nil.
  3158. ; if DnodeNumber is set to zero, pathName should point to a packed path name.
  3159. ; internetName should be large enough to hold
  3160. ; the internetName. (If the internetName is same as the one got by
  3161. ; GetLocalInternetName call, it indicates cluster is reachable  without
  3162. ; forwarders, --> Tell me if I am wrong)
  3163.  
  3164. ; DirCreatePersonalDirectory:
  3165. ; A new  personal directory can be created by specifying an FSSpec for
  3166. ; the file. If a file already exists dupFNErr will be returned. This call is
  3167. ; supported 'synchronous' mode only.
  3168.  
  3169. (defrecord DirCreatePersonalDirectoryPB 
  3170.    (qLink :POINTER)
  3171.    (reserved1 :SIGNED-LONG)
  3172.    (reserved2 :SIGNED-LONG)
  3173.    (ioCompletion :POINTER)
  3174.    (ioResult :SIGNED-INTEGER)
  3175.    (saveA5 :SIGNED-LONG)
  3176.    (reqCode :SIGNED-INTEGER)
  3177.    (reserved (:ARRAY :SIGNED-LONG 2))
  3178.    (serverHint :ADDRBLOCK)
  3179.    (dsRefNum :SIGNED-INTEGER)
  3180.    (callID :SIGNED-LONG)
  3181.    (identity :SIGNED-LONG)
  3182.    (gReserved1 :SIGNED-LONG)
  3183.    (gReserved2 :SIGNED-LONG)
  3184.    (gReserved3 :SIGNED-LONG)
  3185.    (clientData :SIGNED-LONG)
  3186.  
  3187.    (fsSpec :FSSPECPTR)          ;   --> FSSpec for the PersonalDirectory 
  3188.    (fdType :OSTYPE)             ;   --> file type for the PersonalDirectory 
  3189.    (fdCreator :OSTYPE)          ;   --> file creator for the PersonalDirectory 
  3190.    )
  3191.  
  3192. ; DirOpenPersonalDirectory:
  3193. ; An existing personal directory can be opened using this call.
  3194. ; User can specify the personal directory by FSSpec for the AddressBook file.
  3195. ; 'accessRequested' field specifies open permissions. 'fsRdPerm'  & 'fsRdWrPerm'
  3196. ; are the only accepted open modes for the address book.
  3197. ; When the call completes successfully, a dsRefNum will be returned. The 'dsRefNum'
  3198. ; field is in the DSParamBlockHeader. In addittion 'accessGranted' indicates
  3199. ; actual permission with personal directory is opened and 'features' indicate the capabilty flags
  3200. ; associated with the personal directory.
  3201. ; This call is supported 'synchronous' mode only.
  3202.  
  3203. (defrecord DirOpenPersonalDirectoryPB 
  3204.    (qLink :POINTER)
  3205.    (reserved1 :SIGNED-LONG)
  3206.    (reserved2 :SIGNED-LONG)
  3207.    (ioCompletion :POINTER)
  3208.    (ioResult :SIGNED-INTEGER)
  3209.    (saveA5 :SIGNED-LONG)
  3210.    (reqCode :SIGNED-INTEGER)
  3211.    (reserved (:ARRAY :SIGNED-LONG 2))
  3212.    (serverHint :ADDRBLOCK)
  3213.    (dsRefNum :SIGNED-INTEGER)
  3214.    (callID :SIGNED-LONG)
  3215.    (identity :SIGNED-LONG)
  3216.    (gReserved1 :SIGNED-LONG)
  3217.    (gReserved2 :SIGNED-LONG)
  3218.    (gReserved3 :SIGNED-LONG)
  3219.    (clientData :SIGNED-LONG)
  3220.  
  3221.    (fsSpec :FSSPECPTR)          ;   --> Open an existing PersonalDirectory 
  3222.    (accessRequested :CHARACTER) ;   --> Open: permissions Requested(byte)
  3223.    (accessGranted :CHARACTER)   ;   <-- Open: permissions (byte) (Granted)
  3224.    (features :SIGNED-LONG)      ;  <--  features for PersonalDirectory 
  3225.    )
  3226.  
  3227. ; DirClosePersonalDirectory: This call lets a client close AddressBook opened by DirOpenPersonalDirectory.
  3228. ; The PersonalDirectory specified by the 'dsRefNum' will be closed.
  3229. ; This call is supported 'synchronous' mode only.
  3230.  
  3231. (defrecord DirClosePersonalDirectoryPB 
  3232.    (qLink :POINTER)
  3233.    (reserved1 :SIGNED-LONG)
  3234.    (reserved2 :SIGNED-LONG)
  3235.    (ioCompletion :POINTER)
  3236.    (ioResult :SIGNED-INTEGER)
  3237.    (saveA5 :SIGNED-LONG)
  3238.    (reqCode :SIGNED-INTEGER)
  3239.    (reserved (:ARRAY :SIGNED-LONG 2))
  3240.    (serverHint :ADDRBLOCK)
  3241.    (dsRefNum :SIGNED-INTEGER)
  3242.    (callID :SIGNED-LONG)
  3243.    (identity :SIGNED-LONG)
  3244.    (gReserved1 :SIGNED-LONG)
  3245.    (gReserved2 :SIGNED-LONG)
  3246.    (gReserved3 :SIGNED-LONG)
  3247.    (clientData :SIGNED-LONG)
  3248.    )
  3249.  
  3250. ; DirMakePersonalDirectoryRLI: With this call a client can make an RLI
  3251. ; for an PersonalDirectory opened by DirOpenPersonalDirectory Call.
  3252. ; A packed RLI is created for the PersonalDirectory specified by the 'dsRefNum'.
  3253. ; If a client has a need to make the AddressBook reference to persistent
  3254. ; acrross boots it should make use of this call. In the current implementaion
  3255. ; PackedRLI has an embeeded System7.0 'alias'. If in later time
  3256. ; If client has a need to make reference to the AddressBook, it must use
  3257. ; ADAPLibrary call 'DUExtractAlias' and resole the 'alias' to 'FSSpec' and
  3258. ; make DirOpenPersonalDirectory call to get a 'dsRefNum'.
  3259. ;   'fromFSSpec'            FSPecPtr from which relative alias to be created. If nil,
  3260. ;                         absolute alias is created.
  3261. ;  'pRLIBufferSize' indicates the size of buffer pointed by 'pRLI'
  3262. ;  'pRLISize'    indicates the actual length of 'pRLI'. If the call
  3263. ;                         fails with 'kOCEMoreData' error a client can reissue
  3264. ;                     this call with a larger buffer of this length.
  3265. ;   'pRLI' is pointer to the buffer in which 'PackedRLI' is
  3266. ;   returned.
  3267. ; This call is supported in 'synchronous' mode only.
  3268.  
  3269. (defrecord DirMakePersonalDirectoryRLIPB 
  3270.    (qLink :POINTER)
  3271.    (reserved1 :SIGNED-LONG)
  3272.    (reserved2 :SIGNED-LONG)
  3273.    (ioCompletion :POINTER)
  3274.    (ioResult :SIGNED-INTEGER)
  3275.    (saveA5 :SIGNED-LONG)
  3276.    (reqCode :SIGNED-INTEGER)
  3277.    (reserved (:ARRAY :SIGNED-LONG 2))
  3278.    (serverHint :ADDRBLOCK)
  3279.    (dsRefNum :SIGNED-INTEGER)
  3280.    (callID :SIGNED-LONG)
  3281.    (identity :SIGNED-LONG)
  3282.    (gReserved1 :SIGNED-LONG)
  3283.    (gReserved2 :SIGNED-LONG)
  3284.    (gReserved3 :SIGNED-LONG)
  3285.    (clientData :SIGNED-LONG)
  3286.  
  3287.    (fromFSSpec :FSSPECPTR)      ;   --> FSSpec for creating relative alia 
  3288.    (pRLIBufferSize :SIGNED-INTEGER);   --> Length of 'pRLI' buffer 
  3289.    (pRLISize :SIGNED-INTEGER)   ;  <--  Length of actual 'pRLI' 
  3290.    (pRLI (:POINTER :PACKEDRLI)) ;  <--  pRLI for the specified AddressBook 
  3291.    )
  3292.  
  3293. ; ****************************************************************************
  3294. ; The calls described below apply only for DSAM Drivers:
  3295. ; The following three calls provide capability to Install/Remove a DSAM at RunTime.
  3296. ;     DirAddDSAM
  3297. ;     DirRemoveDSAM
  3298. ;     DirInstantiateDSAM
  3299. ; The following two calls provide capability to Install/Remove a DSAM Directory at RunTime.
  3300. ;     DirAddDSAMDirectory
  3301. ;     DirRemoveDirectory
  3302. ; DirGetDirectoryIcon call is used by clients to get any special icon associated
  3303. ; with a DSAM directory.
  3304. ; ****************************************************************************
  3305.  
  3306. ; DirAddDSAM: This call can be used to inorm the availability of a DSAM file
  3307. ; after discovering the DSAM file.
  3308. ;     dsamName -> is generic DSAM name e.g. Untitled X.500 directory
  3309. ;     dsamSignature -> could be generic DSAM kind e.g. 'X500'.
  3310. ;     fsSpec -> is the FileSpec for the file containing DSAM resources.
  3311. ; If the call is successfull 'DSAMRecordCID' will be returned. If the
  3312. ; call returns 'daDSAMRecordCIDExists', record was already there and
  3313. ; 'dsamRecordCID' will be returned.
  3314. ; This call can be done only in synchronous mode.
  3315.  
  3316. (defrecord DirAddDSAMPB 
  3317.    (qLink :POINTER)
  3318.    (reserved1 :SIGNED-LONG)
  3319.    (reserved2 :SIGNED-LONG)
  3320.    (ioCompletion :POINTER)
  3321.    (ioResult :SIGNED-INTEGER)
  3322.    (saveA5 :SIGNED-LONG)
  3323.    (reqCode :SIGNED-INTEGER)
  3324.    (reserved (:ARRAY :SIGNED-LONG 2))
  3325.    (serverHint :ADDRBLOCK)
  3326.    (dsRefNum :SIGNED-INTEGER)
  3327.    (callID :SIGNED-LONG)
  3328.    (identity :SIGNED-LONG)
  3329.    (gReserved1 :SIGNED-LONG)
  3330.    (gReserved2 :SIGNED-LONG)
  3331.    (gReserved3 :SIGNED-LONG)
  3332.    (clientData :SIGNED-LONG)
  3333.  
  3334.    (dsamRecordCID :CREATIONID)  ;  <--  CreationID for the DSAM record 
  3335.    (dsamName (:POINTER :RSTRING));   --> DSAM name 
  3336.    (dsamKind :SIGNED-LONG)      ;   --> DSAM kind 
  3337.    (fsSpec :FSSPECPTR)          ;   --> FSSpec for the file containing DSAM 
  3338.    )
  3339.  
  3340. ; DirInstantiateDSAM: This call should be used by the DSAM driver in response
  3341. ; Driver Open call to indicate the toolbox about the availability of the DSAM.
  3342. ;     dsamName -> is generic DSAM name e.g. Untitled X.500 directory
  3343. ;     dsamKind -> could be generic DSAM kind e.g. 'X500'.
  3344. ;     dsamData -> pointer to private DSAMData. This will be paased back to the DSAM
  3345. ;     when the DSAM functions (DSAMDirProc, DSAMDirParseProc, DSAMAuthProc) are called.
  3346. ;     DSAM should already be setup using DirAddDSAM call.
  3347. ;     DSAMDirProc -> This procedure will be called when  any directory service
  3348. ;     call intended for the DSAM (other then parse calls)
  3349. ;     DSAMDirParseProc -> This procedure will be called when any of the parse calls
  3350. ;     are called.
  3351. ;     DSAMAuthProc -> This procedure will be called when any of the Authentication Calls
  3352. ;     are made to the DSAM. If the DSAM does not support authentication, this can be nil.
  3353. ; This call can be done only in synchronous mode.
  3354.  
  3355. (defrecord DirInstantiateDSAMPB 
  3356.    (qLink :POINTER)
  3357.    (reserved1 :SIGNED-LONG)
  3358.    (reserved2 :SIGNED-LONG)
  3359.    (ioCompletion :POINTER)
  3360.    (ioResult :SIGNED-INTEGER)
  3361.    (saveA5 :SIGNED-LONG)
  3362.    (reqCode :SIGNED-INTEGER)
  3363.    (reserved (:ARRAY :SIGNED-LONG 2))
  3364.    (serverHint :ADDRBLOCK)
  3365.    (dsRefNum :SIGNED-INTEGER)
  3366.    (callID :SIGNED-LONG)
  3367.    (identity :SIGNED-LONG)
  3368.    (gReserved1 :SIGNED-LONG)
  3369.    (gReserved2 :SIGNED-LONG)
  3370.    (gReserved3 :SIGNED-LONG)
  3371.    (clientData :SIGNED-LONG)
  3372.  
  3373.    (dsamName (:POINTER :RSTRING));   --> dsamName name 
  3374.    (dsamKind :SIGNED-LONG)      ;   --> DSAMKind 
  3375.    (dsamData :POINTER)          ;   --> dsamData  
  3376.    (dsamDirProc :POINTER)       ;   --> of type DSAMDirProc: for directory service calls 
  3377.    (dsamDirParseProc :POINTER)  ;   --> of type DSAMDirParseProc: for directory service parse calls 
  3378.    (dsamAuthProc :POINTER)      ;   --> of type DSAMAuthProc: for authetication service calls 
  3379.    )
  3380.  
  3381. ; DirRemoveDSAM: This call can be used to remove  a DSAM file from the OCE Setup.
  3382. ;     dsamRecordCID -> is the creationID of the DSAM record.
  3383. ; This call can be made only in synchronous mode.
  3384.  
  3385. (defrecord DirRemoveDSAMPB 
  3386.    (qLink :POINTER)
  3387.    (reserved1 :SIGNED-LONG)
  3388.    (reserved2 :SIGNED-LONG)
  3389.    (ioCompletion :POINTER)
  3390.    (ioResult :SIGNED-INTEGER)
  3391.    (saveA5 :SIGNED-LONG)
  3392.    (reqCode :SIGNED-INTEGER)
  3393.    (reserved (:ARRAY :SIGNED-LONG 2))
  3394.    (serverHint :ADDRBLOCK)
  3395.    (dsRefNum :SIGNED-INTEGER)
  3396.    (callID :SIGNED-LONG)
  3397.    (identity :SIGNED-LONG)
  3398.    (gReserved1 :SIGNED-LONG)
  3399.    (gReserved2 :SIGNED-LONG)
  3400.    (gReserved3 :SIGNED-LONG)
  3401.    (clientData :SIGNED-LONG)
  3402.  
  3403.    (dsamRecordCID :CREATIONID)  ;  <--  CreationID for the DSAM record 
  3404.    )
  3405.  
  3406. ; DirAddDSAMDirectory: This call can be used to inorm the availability of a DSAM directory.
  3407. ;     dsamRecordCID ->  recordID for the DSAM serving this directory
  3408. ;     directoryName ->  name of the directory
  3409. ;     discriminator -> discriminator for the directory
  3410. ;     directoryRecordCID -> If the call is successful, creationID for the record will
  3411. ;                             be returned.
  3412.  
  3413. (defrecord DirAddDSAMDirectoryPB 
  3414.    (qLink :POINTER)
  3415.    (reserved1 :SIGNED-LONG)
  3416.    (reserved2 :SIGNED-LONG)
  3417.    (ioCompletion :POINTER)
  3418.    (ioResult :SIGNED-INTEGER)
  3419.    (saveA5 :SIGNED-LONG)
  3420.    (reqCode :SIGNED-INTEGER)
  3421.    (reserved (:ARRAY :SIGNED-LONG 2))
  3422.    (serverHint :ADDRBLOCK)
  3423.    (dsRefNum :SIGNED-INTEGER)
  3424.    (callID :SIGNED-LONG)
  3425.    (identity :SIGNED-LONG)
  3426.    (gReserved1 :SIGNED-LONG)
  3427.    (gReserved2 :SIGNED-LONG)
  3428.    (gReserved3 :SIGNED-LONG)
  3429.    (clientData :SIGNED-LONG)
  3430.  
  3431.    (dsamRecordCID :CREATIONID)  ;   --> CreationID for the DSAM record 
  3432.    (directoryName (:POINTER :DIRECTORYNAME));   --> directory name 
  3433.    (discriminator :DIRDISCRIMINATOR);   --> dir discriminator 
  3434.    (features :SIGNED-LONG)      ;   --> capabilty flags for the directory 
  3435.    (directoryRecordCID :CREATIONID);  <--  creationID for the directory record 
  3436.    )
  3437.  
  3438. ; DirRemoveDirectory: This call can be used to inform the toolbox that
  3439. ; directory specified by 'directoryRecordCID'
  3440.  
  3441. (defrecord DirRemoveDirectoryPB 
  3442.    (qLink :POINTER)
  3443.    (reserved1 :SIGNED-LONG)
  3444.    (reserved2 :SIGNED-LONG)
  3445.    (ioCompletion :POINTER)
  3446.    (ioResult :SIGNED-INTEGER)
  3447.    (saveA5 :SIGNED-LONG)
  3448.    (reqCode :SIGNED-INTEGER)
  3449.    (reserved (:ARRAY :SIGNED-LONG 2))
  3450.    (serverHint :ADDRBLOCK)
  3451.    (dsRefNum :SIGNED-INTEGER)
  3452.    (callID :SIGNED-LONG)
  3453.    (identity :SIGNED-LONG)
  3454.    (gReserved1 :SIGNED-LONG)
  3455.    (gReserved2 :SIGNED-LONG)
  3456.    (gReserved3 :SIGNED-LONG)
  3457.    (clientData :SIGNED-LONG)
  3458.  
  3459.    (directoryRecordCID :CREATIONID);   --> creationID for the directory record 
  3460.    )
  3461.  
  3462. ;     DSGetExtendedDirectoriesInfo::  This call can be used to get
  3463. ;     the information of various foreign directories supported.
  3464. ;     Typically a DE Template  may make this call to create a
  3465. ;     Address template or a Gateway may make this call to findout
  3466. ;     directory name space in which MSAM may would support.
  3467. ;     Client will supply a buffer pointed by 'bufferPtr' of size 'bufferLength'.
  3468. ;     When the call completes with 'daMoreData' error, client can examine 'totalEntries'
  3469. ;     returned and reissue the call with increaing buffer.
  3470. ;     Toolbox will findout the private information of each of the Foreign Directories
  3471. ;     by polling DSAM's, Gateways, and MnMServers. The Information returned
  3472. ;     for each directory will be packed in the format:
  3473. ;     EachDirectoryData = RECORD
  3474. ;         pRLI: PackedRLIPtr;                /  packed RLI for the directory
  3475. ;         entnType: OSType;                /  Entn Type
  3476. ;         hasMailSlot: LONGINT;            /  If this directory has mail slot this will be 1 otherwise zero
  3477. ;         RealName: ProtoRString;            /  Packed RString for Real Name (padded to even boundary)
  3478. ;         comment: ProtoRString;            /  Packed RString holding any comment for Display (padded to even boundary)
  3479. ;         length: LONGINT;                /  data length
  3480. ;         data CHAR[1..length];            /  data padded to even boundary
  3481. ;         END;
  3482. ;      myData = RECORD
  3483. ;         data: EacDirectoryData [1..numberOfEntries];    / data packed in the above format
  3484. ;         END;
  3485. ;  
  3486.  
  3487. (defrecord DirGetExtendedDirectoriesInfoPB 
  3488.    (qLink :POINTER)
  3489.    (reserved1 :SIGNED-LONG)
  3490.    (reserved2 :SIGNED-LONG)
  3491.    (ioCompletion :POINTER)
  3492.    (ioResult :SIGNED-INTEGER)
  3493.    (saveA5 :SIGNED-LONG)
  3494.    (reqCode :SIGNED-INTEGER)
  3495.    (reserved (:ARRAY :SIGNED-LONG 2))
  3496.    (serverHint :ADDRBLOCK)
  3497.    (dsRefNum :SIGNED-INTEGER)
  3498.    (callID :SIGNED-LONG)
  3499.    (identity :SIGNED-LONG)
  3500.    (gReserved1 :SIGNED-LONG)
  3501.    (gReserved2 :SIGNED-LONG)
  3502.    (gReserved3 :SIGNED-LONG)
  3503.    (clientData :SIGNED-LONG)
  3504.  
  3505.    (buffer :POINTER)            ;   --> Pointer to a buufer where data will be returned 
  3506.    (bufferSize :SIGNED-LONG)    ;   --> Length of the buffer, Length of actual data will be returned here 
  3507.    (totalEntries :SIGNED-LONG)  ;  <--  Total Number of Directories found 
  3508.    (actualEntries :SIGNED-LONG) ;  <--  Total Number of Directories entries returned 
  3509.    )
  3510.  
  3511. ; DirGetDirectoryIconPB: With this call a client can find out about
  3512. ; the icons supported by the Directory.
  3513. ; Both ADAP and PersonalDirectory will not support this call for now.
  3514. ; A DSAM can support a call so that DE Extension can use this
  3515. ; call to find appropriate Icons.
  3516.  
  3517. (defrecord DirGetDirectoryIconPB 
  3518.    (qLink :POINTER)
  3519.    (reserved1 :SIGNED-LONG)
  3520.    (reserved2 :SIGNED-LONG)
  3521.    (ioCompletion :POINTER)
  3522.    (ioResult :SIGNED-INTEGER)
  3523.    (saveA5 :SIGNED-LONG)
  3524.    (reqCode :SIGNED-INTEGER)
  3525.    (reserved (:ARRAY :SIGNED-LONG 2))
  3526.    (serverHint :ADDRBLOCK)
  3527.    (dsRefNum :SIGNED-INTEGER)
  3528.    (callID :SIGNED-LONG)
  3529.    (identity :SIGNED-LONG)
  3530.    (gReserved1 :SIGNED-LONG)
  3531.    (gReserved2 :SIGNED-LONG)
  3532.    (gReserved3 :SIGNED-LONG)
  3533.    (clientData :SIGNED-LONG)
  3534.  
  3535.    (pRLI (:POINTER :PACKEDRLI)) ;   --> packed RLI for the directory 
  3536.    (iconType :OSTYPE)           ;   --> Type of Icon requested 
  3537.    (iconBuffer :POINTER)        ;   --> Buffer to hold Icon Data 
  3538.    (bufferSize :SIGNED-LONG)    ;   <-> size of buffer to hold icon data 
  3539.    )
  3540.  
  3541. ; DirGetOCESetupRefNum: This call will return 'dsRefnum' for the OCE Setup PersonalDirectory
  3542. ; and oceSetupRecordCID for the oceSetup Record.
  3543. ; Clients interested in manipulating OCE Setup PersonalDirectory directly should
  3544. ; make this call to get 'dsRefNum'.
  3545. ; 'dsRefNum' will be returned in the standard field in the AuthDirParamHeader.
  3546.  
  3547. (defrecord DirGetOCESetupRefNumPB 
  3548.    (qLink :POINTER)
  3549.    (reserved1 :SIGNED-LONG)
  3550.    (reserved2 :SIGNED-LONG)
  3551.    (ioCompletion :POINTER)
  3552.    (ioResult :SIGNED-INTEGER)
  3553.    (saveA5 :SIGNED-LONG)
  3554.    (reqCode :SIGNED-INTEGER)
  3555.    (reserved (:ARRAY :SIGNED-LONG 2))
  3556.    (serverHint :ADDRBLOCK)
  3557.    (dsRefNum :SIGNED-INTEGER)
  3558.    (callID :SIGNED-LONG)
  3559.    (identity :SIGNED-LONG)
  3560.    (gReserved1 :SIGNED-LONG)
  3561.    (gReserved2 :SIGNED-LONG)
  3562.    (gReserved3 :SIGNED-LONG)
  3563.    (clientData :SIGNED-LONG)
  3564.  
  3565.    (oceSetupRecordCID :CREATIONID);  --> creationID for the directory record 
  3566.    )
  3567.  
  3568. ; ***************************************************************************
  3569. ;  Directory and Authentication control blocks and operation definitions 
  3570.  
  3571. (defrecord AuthParamBlock 
  3572.    (:variant 
  3573.       ((header :AUTHDIRPARAMHEADER))
  3574.       ((bindIdentityPB :AUTHBINDSPECIFICIDENTITYPB))
  3575.       ((unbindIdentityPB :AUTHUNBINDSPECIFICIDENTITYPB))
  3576.       ((resolveCreationIDPB :AUTHRESOLVECREATIONIDPB))
  3577.       ((getIdentityInfoPB :AUTHGETSPECIFICIDENTITYINFOPB))
  3578.       ((addKeyPB :AUTHADDKEYPB))
  3579.       ((changeKeyPB :AUTHCHANGEKEYPB))
  3580.       ((deleteKeyPB :AUTHDELETEKEYPB))
  3581.       ((passwordToKeyPB :AUTHPASSWORDTOKEYPB))
  3582.       ((getCredentialsPB :AUTHGETCREDENTIALSPB))
  3583.       ((decryptCredentialsPB :AUTHDECRYPTCREDENTIALSPB))
  3584.       ((makeChallengePB :AUTHMAKECHALLENGEPB))
  3585.       ((makeReplyPB :AUTHMAKEREPLYPB))
  3586.       ((verifyReplyPB :AUTHVERIFYREPLYPB))
  3587.       ((getUTCTimePB :AUTHGETUTCTIMEPB))
  3588.       ((makeProxyPB :AUTHMAKEPROXYPB))
  3589.       ((tradeProxyForCredentialsPB :AUTHTRADEPROXYFORCREDENTIALSPB))
  3590.       ((getLocalIdentityPB :AUTHGETLOCALIDENTITYPB))
  3591.       ((unLockLocalIdentityPB :AUTHUNLOCKLOCALIDENTITYPB))
  3592.       ((lockLocalIdentityPB :AUTHLOCKLOCALIDENTITYPB))
  3593.       ((localIdentityQInstallPB :AUTHADDTOLOCALIDENTITYQUEUEPB))
  3594.       ((localIdentityQRemovePB :AUTHREMOVEFROMLOCALIDENTITYQUEUEPB))
  3595.       ((setupLocalIdentityPB :AUTHSETUPLOCALIDENTITYPB))
  3596.       ((changeLocalIdentityPB :AUTHCHANGELOCALIDENTITYPB))
  3597.       ((removeLocalIdentityPB :AUTHREMOVELOCALIDENTITYPB))
  3598.       ((setupDirectoryIdentityPB :OCESETUPADDDIRECTORYINFOPB))
  3599.       ((changeDirectoryIdentityPB :OCESETUPCHANGEDIRECTORYINFOPB))
  3600.       ((removeDirectoryIdentityPB :OCESETUPREMOVEDIRECTORYINFOPB))
  3601.       ((getDirectoryIdentityInfoPB :OCESETUPGETDIRECTORYINFOPB))
  3602.       ))
  3603.  
  3604. (def-mactype :AUTHPARAMBLOCKPTR (find-mactype :POINTER))
  3605.  
  3606. (defrecord DirParamBlock 
  3607.    (:variant 
  3608.       ((header :AUTHDIRPARAMHEADER))
  3609.       ((addRecordPB :DIRADDRECORDPB))
  3610.       ((deleteRecordPB :DIRDELETERECORDPB))
  3611.       ((enumerateGetPB :DIRENUMERATEGETPB))
  3612.       ((enumerateParsePB :DIRENUMERATEPARSEPB))
  3613.       ((findRecordGetPB :DIRFINDRECORDGETPB))
  3614.       ((findRecordParsePB :DIRFINDRECORDPARSEPB))
  3615.       ((lookupGetPB :DIRLOOKUPGETPB))
  3616.       ((lookupParsePB :DIRLOOKUPPARSEPB))
  3617.       ((addAttributeValuePB :DIRADDATTRIBUTEVALUEPB))
  3618.       ((deleteAttributeTypePB :DIRDELETEATTRIBUTETYPEPB))
  3619.       ((deleteAttributeValuePB :DIRDELETEATTRIBUTEVALUEPB))
  3620.       ((changeAttributeValuePB :DIRCHANGEATTRIBUTEVALUEPB))
  3621.       ((verifyAttributeValuePB :DIRVERIFYATTRIBUTEVALUEPB))
  3622.       ((findValuePB :DIRFINDVALUEPB))
  3623.       ((enumeratePseudonymGetPB :DIRENUMERATEPSEUDONYMGETPB))
  3624.       ((enumeratePseudonymParsePB :DIRENUMERATEPSEUDONYMPARSEPB))
  3625.       ((addPseudonymPB :DIRADDPSEUDONYMPB))
  3626.       ((deletePseudonymPB :DIRDELETEPSEUDONYMPB))
  3627.       ((addAliasPB :DIRADDALIASPB))
  3628.       ((enumerateAttributeTypesGetPB :DIRENUMERATEATTRIBUTETYPESGETPB))
  3629.       ((enumerateAttributeTypesParsePB :DIRENUMERATEATTRIBUTETYPESPARSEPB))
  3630.       ((getNameAndTypePB :DIRGETNAMEANDTYPEPB))
  3631.       ((setNameAndTypePB :DIRSETNAMEANDTYPEPB))
  3632.       ((getRecordMetaInfoPB :DIRGETRECORDMETAINFOPB))
  3633.       ((getDNodeMetaInfoPB :DIRGETDNODEMETAINFOPB))
  3634.       ((getDirectoryInfoPB :DIRGETDIRECTORYINFOPB))
  3635.       ((getDNodeAccessControlGetPB :DIRGETDNODEACCESSCONTROLGETPB))
  3636.       ((getDNodeAccessControlParsePB :DIRGETDNODEACCESSCONTROLPARSEPB))
  3637.       ((getRecordAccessControlGetPB :DIRGETRECORDACCESSCONTROLGETPB))
  3638.       ((getRecordAccessControlParsePB :DIRGETRECORDACCESSCONTROLPARSEPB))
  3639.       ((getAttributeAccessControlGetPB :DIRGETATTRIBUTEACCESSCONTROLGETPB))
  3640.       ((getAttributeAccessControlParsePB :DIRGETATTRIBUTEACCESSCONTROLPARSEPB))
  3641.       ((enumerateDirectoriesGetPB :DIRENUMERATEDIRECTORIESGETPB))
  3642.       ((enumerateDirectoriesParsePB :DIRENUMERATEDIRECTORIESPARSEPB))
  3643.       ((addADAPDirectoryPB :DIRADDADAPDIRECTORYPB))
  3644.       ((removeDirectoryPB :DIRREMOVEDIRECTORYPB))
  3645.       ((netSearchADAPDirectoriesGetPB :DIRNETSEARCHADAPDIRECTORIESGETPB))
  3646.       ((netSearchADAPDirectoriesParsePB :DIRNETSEARCHADAPDIRECTORIESPARSEPB))
  3647.       ((findADAPDirectoryByNetSearchPB :DIRFINDADAPDIRECTORYBYNETSEARCHPB))
  3648.       ((mapDNodeNumberToPathNamePB :DIRMAPDNODENUMBERTOPATHNAMEPB))
  3649.       ((mapPathNameToDNodeNumberPB :DIRMAPPATHNAMETODNODENUMBERPB))
  3650.       ((getLocalNetworkSpecPB :DIRGETLOCALNETWORKSPECPB))
  3651.       ((getDNodeInfoPB :DIRGETDNODEINFOPB))
  3652.  
  3653. ;  Calls For PersonalDirectoryies 
  3654.       ((createPersonalDirectoryPB :DIRCREATEPERSONALDIRECTORYPB))
  3655.       ((openPersonalDirectoryPB :DIROPENPERSONALDIRECTORYPB))
  3656.       ((closePersonalDirectoryPB :DIRCLOSEPERSONALDIRECTORYPB))
  3657.       ((makePersonalDirectoryRLIPB :DIRMAKEPERSONALDIRECTORYRLIPB))
  3658.  
  3659. ;  Calls For DSAM's 
  3660.       ((addDSAMPB :DIRADDDSAMPB))
  3661.       ((instantiateDSAMPB :DIRINSTANTIATEDSAMPB))
  3662.       ((removeDSAMPB :DIRREMOVEDSAMPB))
  3663.       ((addDSAMDirectoryPB :DIRADDDSAMDIRECTORYPB))
  3664.       ((getExtendedDirectoriesInfoPB :DIRGETEXTENDEDDIRECTORIESINFOPB))
  3665.       ((getDirectoryIconPB :DIRGETDIRECTORYICONPB))
  3666.  
  3667. ;  Call to dsRefNum for System(Setup: OCE) PersonalDirectory 
  3668.       ((DirGetOCESetupRefNumPB :DIRGETOCESETUPREFNUMPB))
  3669.  
  3670. ;  Abort a aysnchronous call 
  3671.       ((abortPB :DIRABORTPB))
  3672.       ))
  3673.  
  3674. (def-mactype :DIRPARAMBLOCKPTR (find-mactype :POINTER))
  3675.  
  3676. (def-mactype :DSAMDIRPROC (find-mactype :POINTER))
  3677. ;  FUNCTION DSAMDirProc(
  3678. ;         dsamData: Ptr; paramBlock: DirParamBlockPtr; async: BOOLEAN): OSErr;
  3679. (def-mactype :DSAMDIRPARSEPROC (find-mactype :POINTER))
  3680. ;  FUNCTION DSAMDirParseProc(
  3681. ;         dsamData: Ptr; paramBlock: DirParamBlockPtr; async: BOOLEAN): OSErr;
  3682. (def-mactype :DSAMAUTHPROC (find-mactype :POINTER))
  3683. ;  FUNCTION DSAMAuthProc(
  3684. ;         dsamData: Ptr; pb: AuthParamBlockPtr; async: BOOLEAN): OSErr;
  3685.  
  3686. ; ***********************************************************
  3687. ; These are the selector values used after the trap dispatch to determine just
  3688. ; what call the client made to my toolbox.  These bear no relationship to the
  3689. ; procedure numbers used in the client-to-server protocol.
  3690.  
  3691. ;  Note:  $21C, $21D are used internally
  3692. ;  
  3693.  
  3694. (defconstant $kAuthBindSpecificIdentity #X200)
  3695. (defconstant $kAuthUnbindSpecificIdentity #X201)
  3696. (defconstant $kAuthResolveCreationID #X202)
  3697. (defconstant $kAuthGetSpecificIdentityInfo #X203)
  3698. (defconstant $kAuthGetLocalIdentity #X204)
  3699.  
  3700. (defconstant $kAuthAddToLocalIdentityQueue #X205)
  3701. (defconstant $kAuthRemoveFromLocalIdentityQueue #X206)
  3702.  
  3703. (defconstant $kAuthAddKey #X207)
  3704. (defconstant $kAuthChangeKey #X208)
  3705. (defconstant $kAuthDeleteKey #X209)
  3706. (defconstant $kAuthPasswordToKey #X20A)
  3707.  
  3708. (defconstant $kAuthGetCredentials #X20B)
  3709. (defconstant $kAuthDecryptCredentials #X20C)
  3710.  
  3711. (defconstant $kOCESetupRemoveDirectoryInfo #X20D)
  3712. (defconstant $kOCESetupGetDirectoryInfo #X20E)
  3713.  
  3714. (defconstant $kAuthMakeChallenge #X20F)
  3715. (defconstant $kAuthMakeReply #X210)
  3716. (defconstant $kAuthVerifyReply #X211)
  3717. (defconstant $kAuthMakeProxy #X212)
  3718. (defconstant $kAuthTradeProxyForCredentials #X213)
  3719.  
  3720. (defconstant $kAuthUnlockLocalIdentity #X214)
  3721. (defconstant $kAuthLockLocalIdentity #X215)
  3722. (defconstant $kAuthSetupLocalIdentity #X216)
  3723.  
  3724. (defconstant $kAuthChangeLocalIdentity #X217)
  3725. (defconstant $kAuthRemoveLocalIdentity #X218)
  3726. (defconstant $kOCESetupAddDirectoryInfo #X219)
  3727.  
  3728. (defconstant $kAuthGetUTCTime #X21A)
  3729.  
  3730. (defconstant $kOCESetupChangeDirectoryInfo #X21B)
  3731.  
  3732. ;  $100 is used as private command 
  3733.  
  3734. (defconstant $kDirEnumerateParse #X101)
  3735. (defconstant $kDirLookupParse #X102)
  3736.  
  3737. (defconstant $kDirEnumerateAttributeTypesParse #X103)
  3738. (defconstant $kDirEnumeratePseudonymParse #X104)
  3739. (defconstant $kDirNetSearchADAPDirectoriesParse #X105)
  3740. (defconstant $kDirEnumerateDirectoriesParse #X106)
  3741.  
  3742. (defconstant $kDirFindADAPDirectoryByNetSearch #X107)
  3743. (defconstant $kDirNetSearchADAPDirectoriesGet #X108)
  3744.  
  3745. (defconstant $kDirAddRecord #X109)
  3746. (defconstant $kDirDeleteRecord #X10A)
  3747. (defconstant $kDirAddAttributeValue #X10B)
  3748. (defconstant $kDirDeleteAttributeValue #X10C)
  3749. (defconstant $kDirChangeAttributeValue #X10D)
  3750. (defconstant $kDirVerifyAttributeValue #X10E)
  3751. (defconstant $kDirAddPseudonym #X10F)
  3752. (defconstant $kDirDeletePseudonym #X110)
  3753. (defconstant $kDirEnumerateGet #X111)
  3754. (defconstant $kDirEnumerateAttributeTypesGet #X112)
  3755. (defconstant $kDirEnumeratePseudonymGet #X113)
  3756. (defconstant $kDirGetNameAndType #X114)
  3757. (defconstant $kDirSetNameAndType #X115)
  3758.  
  3759. (defconstant $kDirGetRecordMetaInfo #X116)
  3760. (defconstant $kDirLookupGet #X117)
  3761.  
  3762. (defconstant $kDirGetDNodeMetaInfo #X118)
  3763. (defconstant $kDirGetDirectoryInfo #X119)
  3764. (defconstant $kDirEnumerateDirectoriesGet #X11A)
  3765.  
  3766. (defconstant $kDirAbort #X11B)
  3767. (defconstant $kDirAddAlias #X11C)
  3768.  
  3769. (defconstant $kDirAddDSAM #X11D)
  3770. (defconstant $kDirOpenPersonalDirectory #X11E)
  3771. (defconstant $kDirCreatePersonalDirectory #X11F)
  3772. (defconstant $kDirRemoveDSAM #X120)
  3773. (defconstant $kDirGetDirectoryIcon #X121)
  3774.  
  3775. (defconstant $kDirMapPathNameToDNodeNumber #X122)
  3776. (defconstant $kDirMapDNodeNumberToPathName #X123)
  3777.  
  3778. (defconstant $kDirGetLocalNetworkSpec #X124)
  3779. (defconstant $kDirGetDNodeInfo #X125)
  3780. (defconstant $kDirFindValue #X126)
  3781. (defconstant $kDirInstantiateDSAM #X127)
  3782. (defconstant $kDirGetOCESetupRefNum #X128)
  3783.  
  3784. (defconstant $kDirGetDNodeAccessControlGet #X12A)
  3785. (defconstant $kDirGetRecordAccessControlGet #X12C)
  3786. (defconstant $kDirGetAttributeAccessControlGet #X12E)
  3787. (defconstant $kDirGetDNodeAccessControlParse #X12F)
  3788. (defconstant $kDirDeleteAttributeType #X130)
  3789.  
  3790. (defconstant $kDirClosePersonalDirectory #X131)
  3791. (defconstant $kDirMakePersonalDirectoryRLI #X132)
  3792.  
  3793. (defconstant $kDirAddDSAMDirectory #X133)
  3794. (defconstant $kDirGetRecordAccessControlParse #X134)
  3795. (defconstant $kDirRemoveDirectory #X135)
  3796. (defconstant $kDirGetExtendedDirectoriesInfo #X136)
  3797.  
  3798. (defconstant $kDirAddADAPDirectory #X137)
  3799. (defconstant $kDirGetAttributeAccessControlParse #X138)
  3800.  
  3801. (defconstant $kDirFindRecordGet #X140)
  3802. (defconstant $kDirFindRecordParse #X141)
  3803.  
  3804.  
  3805. (deftrap _authbindspecificidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3806.    (:stack :signed-integer)
  3807.    (:stack-trap #xAA5E paramblock async (512 :signed-integer)))
  3808.  
  3809. (deftrap _authunbindspecificidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3810.    (:stack :signed-integer)
  3811.    (:stack-trap #xAA5E paramblock async (513 :signed-integer)))
  3812.  
  3813. (deftrap _authresolvecreationid ((paramblock (:pointer :authparamblock)) (async :boolean))
  3814.    (:stack :signed-integer)
  3815.    (:stack-trap #xAA5E paramblock async (514 :signed-integer)))
  3816.  
  3817. (deftrap _authgetspecificidentityinfo ((paramblock (:pointer :authparamblock)) (async :boolean))
  3818.    (:stack :signed-integer)
  3819.    (:stack-trap #xAA5E paramblock async (515 :signed-integer)))
  3820.  
  3821.  
  3822. (deftrap _authaddkey ((paramblock (:pointer :authparamblock)) (async :boolean))
  3823.    (:stack :signed-integer)
  3824.    (:stack-trap #xAA5E paramblock async (519 :signed-integer)))
  3825.  
  3826. (deftrap _authchangekey ((paramblock (:pointer :authparamblock)) (async :boolean))
  3827.    (:stack :signed-integer)
  3828.    (:stack-trap #xAA5E paramblock async (520 :signed-integer)))
  3829.  
  3830. (deftrap _authdeletekey ((paramblock (:pointer :authparamblock)) (async :boolean))
  3831.    (:stack :signed-integer)
  3832.    (:stack-trap #xAA5E paramblock async (521 :signed-integer)))
  3833.  
  3834. (deftrap _authpasswordtokey ((paramblock (:pointer :authparamblock)) (async :boolean))
  3835.    (:stack :signed-integer)
  3836.    (:stack-trap #xAA5E paramblock async (522 :signed-integer)))
  3837.  
  3838.  
  3839. (deftrap _authgetcredentials ((paramblock (:pointer :authparamblock)) (async :boolean))
  3840.    (:stack :signed-integer)
  3841.    (:stack-trap #xAA5E paramblock async (523 :signed-integer)))
  3842.  
  3843. (deftrap _authdecryptcredentials ((paramblock (:pointer :authparamblock)) (async :boolean))
  3844.    (:stack :signed-integer)
  3845.    (:stack-trap #xAA5E paramblock async (524 :signed-integer)))
  3846.  
  3847.  
  3848. (deftrap _authmakechallenge ((paramblock (:pointer :authparamblock)) (async :boolean))
  3849.    (:stack :signed-integer)
  3850.    (:stack-trap #xAA5E paramblock async (527 :signed-integer)))
  3851.  
  3852. (deftrap _authmakereply ((paramblock (:pointer :authparamblock)) (async :boolean))
  3853.    (:stack :signed-integer)
  3854.    (:stack-trap #xAA5E paramblock async (528 :signed-integer)))
  3855.  
  3856. (deftrap _authverifyreply ((paramblock (:pointer :authparamblock)) (async :boolean))
  3857.    (:stack :signed-integer)
  3858.    (:stack-trap #xAA5E paramblock async (529 :signed-integer)))
  3859.  
  3860.  
  3861. (deftrap _authgetutctime ((paramblock (:pointer :authparamblock)) (async :boolean))
  3862.    (:stack :signed-integer)
  3863.    (:stack-trap #xAA5E paramblock async (538 :signed-integer)))
  3864.  
  3865.  
  3866. (deftrap _authmakeproxy ((paramblock (:pointer :authparamblock)) (async :boolean))
  3867.    (:stack :signed-integer)
  3868.    (:stack-trap #xAA5E paramblock async (530 :signed-integer)))
  3869.  
  3870.  
  3871. (deftrap _authtradeproxyforcredentials ((paramblock (:pointer :authparamblock)) (async :boolean))
  3872.    (:stack :signed-integer)
  3873.    (:stack-trap #xAA5E paramblock async (531 :signed-integer)))
  3874.  
  3875. ;  Local Identity API 
  3876.  
  3877. (deftrap _authgetlocalidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3878.    (:stack :signed-integer)
  3879.    (:stack-trap #xAA5E paramblock async (516 :signed-integer)))
  3880.  
  3881.  
  3882. (deftrap _authunlocklocalidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3883.    (:stack :signed-integer)
  3884.    (:stack-trap #xAA5E paramblock async (532 :signed-integer)))
  3885.  
  3886.  
  3887. (deftrap _authlocklocalidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3888.    (:stack :signed-integer)
  3889.    (:stack-trap #xAA5E paramblock async (533 :signed-integer)))
  3890.  
  3891.  
  3892. (deftrap _authaddtolocalidentityqueue ((paramblock (:pointer :authparamblock)) (async :boolean))
  3893.    (:stack :signed-integer)
  3894.    (:stack-trap #xAA5E paramblock async (517 :signed-integer)))
  3895.  
  3896.  
  3897. (deftrap _authremovefromlocalidentityqueue ((paramblock (:pointer :authparamblock)) (async :boolean))
  3898.    (:stack :signed-integer)
  3899.    (:stack-trap #xAA5E paramblock async (518 :signed-integer)))
  3900.  
  3901.  
  3902. (deftrap _authsetuplocalidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3903.    (:stack :signed-integer)
  3904.    (:stack-trap #xAA5E paramblock async (534 :signed-integer)))
  3905.  
  3906.  
  3907. (deftrap _authchangelocalidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3908.    (:stack :signed-integer)
  3909.    (:stack-trap #xAA5E paramblock async (535 :signed-integer)))
  3910.  
  3911.  
  3912. (deftrap _authremovelocalidentity ((paramblock (:pointer :authparamblock)) (async :boolean))
  3913.    (:stack :signed-integer)
  3914.    (:stack-trap #xAA5E paramblock async (536 :signed-integer)))
  3915.  
  3916.  
  3917. (deftrap _ocesetupadddirectoryinfo ((paramblock (:pointer :authparamblock)) (async :boolean))
  3918.    (:stack :signed-integer)
  3919.    (:stack-trap #xAA5E paramblock async (537 :signed-integer)))
  3920.  
  3921.  
  3922. (deftrap _ocesetupchangedirectoryinfo ((paramblock (:pointer :authparamblock)) (async :boolean))
  3923.    (:stack :signed-integer)
  3924.    (:stack-trap #xAA5E paramblock async (539 :signed-integer)))
  3925.  
  3926.  
  3927. (deftrap _ocesetupremovedirectoryinfo ((paramblock (:pointer :authparamblock)) (async :boolean))
  3928.    (:stack :signed-integer)
  3929.    (:stack-trap #xAA5E paramblock async (525 :signed-integer)))
  3930.  
  3931.  
  3932. (deftrap _ocesetupgetdirectoryinfo ((paramblock (:pointer :authparamblock)) (async :boolean))
  3933.    (:stack :signed-integer)
  3934.    (:stack-trap #xAA5E paramblock async (526 :signed-integer)))
  3935.  
  3936.  
  3937. (deftrap _diraddrecord ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3938.    (:stack :signed-integer)
  3939.    (:stack-trap #xAA5E paramblock async (265 :signed-integer)))
  3940.  
  3941.  
  3942. (deftrap _dirdeleterecord ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3943.    (:stack :signed-integer)
  3944.    (:stack-trap #xAA5E paramblock async (266 :signed-integer)))
  3945.  
  3946.  
  3947. (deftrap _direnumerateget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3948.    (:stack :signed-integer)
  3949.    (:stack-trap #xAA5E paramblock async (273 :signed-integer)))
  3950.  
  3951.  
  3952. (deftrap _direnumerateparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3953.    (:stack :signed-integer)
  3954.    (:stack-trap #xAA5E paramblock async (257 :signed-integer)))
  3955.  
  3956.  
  3957. (deftrap _dirfindrecordget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3958.    (:stack :signed-integer)
  3959.    (:stack-trap #xAA5E paramblock async (320 :signed-integer)))
  3960.  
  3961.  
  3962. (deftrap _dirfindrecordparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3963.    (:stack :signed-integer)
  3964.    (:stack-trap #xAA5E paramblock async (321 :signed-integer)))
  3965.  
  3966.  
  3967. (deftrap _dirlookupget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3968.    (:stack :signed-integer)
  3969.    (:stack-trap #xAA5E paramblock async (279 :signed-integer)))
  3970.  
  3971.  
  3972. (deftrap _dirlookupparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3973.    (:stack :signed-integer)
  3974.    (:stack-trap #xAA5E paramblock async (258 :signed-integer)))
  3975.  
  3976.  
  3977. (deftrap _diraddattributevalue ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3978.    (:stack :signed-integer)
  3979.    (:stack-trap #xAA5E paramblock async (267 :signed-integer)))
  3980.  
  3981.  
  3982. (deftrap _dirdeleteattributevalue ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3983.    (:stack :signed-integer)
  3984.    (:stack-trap #xAA5E paramblock async (268 :signed-integer)))
  3985.  
  3986.  
  3987. (deftrap _dirdeleteattributetype ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3988.    (:stack :signed-integer)
  3989.    (:stack-trap #xAA5E paramblock async (304 :signed-integer)))
  3990.  
  3991.  
  3992. (deftrap _dirchangeattributevalue ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3993.    (:stack :signed-integer)
  3994.    (:stack-trap #xAA5E paramblock async (269 :signed-integer)))
  3995.  
  3996.  
  3997. (deftrap _dirverifyattributevalue ((paramblock (:pointer :dirparamblock)) (async :boolean))
  3998.    (:stack :signed-integer)
  3999.    (:stack-trap #xAA5E paramblock async (270 :signed-integer)))
  4000.  
  4001.  
  4002. (deftrap _dirfindvalue ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4003.    (:stack :signed-integer)
  4004.    (:stack-trap #xAA5E paramblock async (294 :signed-integer)))
  4005.  
  4006.  
  4007. (deftrap _direnumerateattributetypesget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4008.    (:stack :signed-integer)
  4009.    (:stack-trap #xAA5E paramblock async (274 :signed-integer)))
  4010.  
  4011.  
  4012. (deftrap _direnumerateattributetypesparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4013.    (:stack :signed-integer)
  4014.    (:stack-trap #xAA5E paramblock async (259 :signed-integer)))
  4015.  
  4016.  
  4017. (deftrap _diraddpseudonym ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4018.    (:stack :signed-integer)
  4019.    (:stack-trap #xAA5E paramblock async (271 :signed-integer)))
  4020.  
  4021.  
  4022. (deftrap _dirdeletepseudonym ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4023.    (:stack :signed-integer)
  4024.    (:stack-trap #xAA5E paramblock async (272 :signed-integer)))
  4025.  
  4026.  
  4027. (deftrap _diraddalias ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4028.    (:stack :signed-integer)
  4029.    (:stack-trap #xAA5E paramblock async (284 :signed-integer)))
  4030.  
  4031.  
  4032. (deftrap _direnumeratepseudonymget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4033.    (:stack :signed-integer)
  4034.    (:stack-trap #xAA5E paramblock async (275 :signed-integer)))
  4035.  
  4036.  
  4037. (deftrap _direnumeratepseudonymparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4038.    (:stack :signed-integer)
  4039.    (:stack-trap #xAA5E paramblock async (260 :signed-integer)))
  4040.  
  4041.  
  4042. (deftrap _dirgetnameandtype ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4043.    (:stack :signed-integer)
  4044.    (:stack-trap #xAA5E paramblock async (276 :signed-integer)))
  4045.  
  4046.  
  4047. (deftrap _dirsetnameandtype ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4048.    (:stack :signed-integer)
  4049.    (:stack-trap #xAA5E paramblock async (277 :signed-integer)))
  4050.  
  4051.  
  4052. (deftrap _dirgetrecordmetainfo ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4053.    (:stack :signed-integer)
  4054.    (:stack-trap #xAA5E paramblock async (278 :signed-integer)))
  4055.  
  4056.  
  4057. (deftrap _dirgetdnodemetainfo ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4058.    (:stack :signed-integer)
  4059.    (:stack-trap #xAA5E paramblock async (280 :signed-integer)))
  4060.  
  4061.  
  4062. (deftrap _dirgetdirectoryinfo ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4063.    (:stack :signed-integer)
  4064.    (:stack-trap #xAA5E paramblock async (281 :signed-integer)))
  4065.  
  4066.  
  4067. (deftrap _dirgetdnodeaccesscontrolget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4068.    (:stack :signed-integer)
  4069.    (:stack-trap #xAA5E paramblock async (298 :signed-integer)))
  4070.  
  4071.  
  4072. (deftrap _dirgetdnodeaccesscontrolparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4073.    (:stack :signed-integer)
  4074.    (:stack-trap #xAA5E paramblock async (303 :signed-integer)))
  4075.  
  4076.  
  4077. (deftrap _dirgetrecordaccesscontrolget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4078.    (:stack :signed-integer)
  4079.    (:stack-trap #xAA5E paramblock async (300 :signed-integer)))
  4080.  
  4081.  
  4082. (deftrap _dirgetrecordaccesscontrolparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4083.    (:stack :signed-integer)
  4084.    (:stack-trap #xAA5E paramblock async (308 :signed-integer)))
  4085.  
  4086.  
  4087. (deftrap _dirgetattributeaccesscontrolget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4088.    (:stack :signed-integer)
  4089.    (:stack-trap #xAA5E paramblock async (302 :signed-integer)))
  4090.  
  4091.  
  4092. (deftrap _dirgetattributeaccesscontrolparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4093.    (:stack :signed-integer)
  4094.    (:stack-trap #xAA5E paramblock async (312 :signed-integer)))
  4095.  
  4096.  
  4097. (deftrap _direnumeratedirectoriesget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4098.    (:stack :signed-integer)
  4099.    (:stack-trap #xAA5E paramblock async (282 :signed-integer)))
  4100.  
  4101.  
  4102. (deftrap _direnumeratedirectoriesparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4103.    (:stack :signed-integer)
  4104.    (:stack-trap #xAA5E paramblock async (262 :signed-integer)))
  4105.  
  4106.  
  4107. (deftrap _dirmappathnametodnodenumber ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4108.    (:stack :signed-integer)
  4109.    (:stack-trap #xAA5E paramblock async (290 :signed-integer)))
  4110.  
  4111.  
  4112. (deftrap _dirmapdnodenumbertopathname ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4113.    (:stack :signed-integer)
  4114.    (:stack-trap #xAA5E paramblock async (291 :signed-integer)))
  4115.  
  4116.  
  4117. (deftrap _dirgetlocalnetworkspec ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4118.    (:stack :signed-integer)
  4119.    (:stack-trap #xAA5E paramblock async (292 :signed-integer)))
  4120.  
  4121.  
  4122. (deftrap _dirgetdnodeinfo ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4123.    (:stack :signed-integer)
  4124.    (:stack-trap #xAA5E paramblock async (293 :signed-integer)))
  4125.  
  4126. ;   Trap Dispatchers for Personal Address Book and DSAM Extensions 
  4127.  
  4128.  
  4129. (deftrap _dircreatepersonaldirectory ((paramblock (:pointer :dirparamblock)))
  4130.    (:stack :signed-integer)
  4131.    (:stack-trap #xAA5E paramblock (18808832 :signed-longint)))
  4132.  
  4133.  
  4134. (deftrap _diropenpersonaldirectory ((paramblock (:pointer :dirparamblock)))
  4135.    (:stack :signed-integer)
  4136.    (:stack-trap #xAA5E paramblock (18743296 :signed-longint)))
  4137.  
  4138.  
  4139. (deftrap _dirclosepersonaldirectory ((paramblock (:pointer :dirparamblock)))
  4140.    (:stack :signed-integer)
  4141.    (:stack-trap #xAA5E paramblock (19988480 :signed-longint)))
  4142.  
  4143.  
  4144. (deftrap _dirmakepersonaldirectoryrli ((paramblock (:pointer :dirparamblock)))
  4145.    (:stack :signed-integer)
  4146.    (:stack-trap #xAA5E paramblock (20054016 :signed-longint)))
  4147.  
  4148.  
  4149. (deftrap _diradddsam ((paramblock (:pointer :dirparamblock)))
  4150.    (:stack :signed-integer)
  4151.    (:stack-trap #xAA5E paramblock (18677760 :signed-longint)))
  4152.  
  4153.  
  4154. (deftrap _dirinstantiatedsam ((paramblock (:pointer :dirparamblock)))
  4155.    (:stack :signed-integer)
  4156.    (:stack-trap #xAA5E paramblock (19333120 :signed-longint)))
  4157.  
  4158.  
  4159. (deftrap _dirremovedsam ((paramblock (:pointer :dirparamblock)))
  4160.    (:stack :signed-integer)
  4161.    (:stack-trap #xAA5E paramblock (18874368 :signed-longint)))
  4162.  
  4163. (deftrap _diradddsamdirectory ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4164.    (:stack :signed-integer)
  4165.    (:stack-trap #xAA5E paramblock async (307 :signed-integer)))
  4166.  
  4167.  
  4168. (deftrap _dirgetextendeddirectoriesinfo ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4169.    (:stack :signed-integer)
  4170.    (:stack-trap #xAA5E paramblock async (310 :signed-integer)))
  4171.  
  4172.  
  4173. (deftrap _dirgetdirectoryicon ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4174.    (:stack :signed-integer)
  4175.    (:stack-trap #xAA5E paramblock async (289 :signed-integer)))
  4176.  
  4177.  
  4178. (deftrap _diraddadapdirectory ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4179.    (:stack :signed-integer)
  4180.    (:stack-trap #xAA5E paramblock async (311 :signed-integer)))
  4181.  
  4182.  
  4183. (deftrap _dirremovedirectory ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4184.    (:stack :signed-integer)
  4185.    (:stack-trap #xAA5E paramblock async (309 :signed-integer)))
  4186.  
  4187.  
  4188. (deftrap _dirnetsearchadapdirectoriesget ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4189.    (:stack :signed-integer)
  4190.    (:stack-trap #xAA5E paramblock async (264 :signed-integer)))
  4191.  
  4192.  
  4193. (deftrap _dirnetsearchadapdirectoriesparse ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4194.    (:stack :signed-integer)
  4195.    (:stack-trap #xAA5E paramblock async (261 :signed-integer)))
  4196.  
  4197.  
  4198. (deftrap _dirfindadapdirectorybynetsearch ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4199.    (:stack :signed-integer)
  4200.    (:stack-trap #xAA5E paramblock async (263 :signed-integer)))
  4201.  
  4202.  
  4203. (deftrap _dirgetocesetuprefnum ((paramblock (:pointer :dirparamblock)) (async :boolean))
  4204.    (:stack :signed-integer)
  4205.    (:stack-trap #xAA5E paramblock async (296 :signed-integer)))
  4206.  
  4207.  
  4208. (deftrap _dirabort ((paramblock (:pointer :dirparamblock)))
  4209.    (:stack :signed-integer)
  4210.    (:stack-trap #xAA5E paramblock (18546688 :signed-longint)))
  4211.  
  4212. ; $ENDC                         ;  UsingOCEAuthDir 
  4213.  
  4214. ; $IFC NOT UsingIncludes
  4215.  
  4216. ; $ENDC
  4217.  
  4218. (export '($KDIRFINDRECORDPARSE $KDIRFINDRECORDGET
  4219.           $KDIRGETATTRIBUTEACCESSCONTROLPARSE $KDIRADDADAPDIRECTORY
  4220.           $KDIRGETEXTENDEDDIRECTORIESINFO $KDIRREMOVEDIRECTORY
  4221.           $KDIRGETRECORDACCESSCONTROLPARSE $KDIRADDDSAMDIRECTORY
  4222.           $KDIRMAKEPERSONALDIRECTORYRLI $KDIRCLOSEPERSONALDIRECTORY
  4223.           $KDIRDELETEATTRIBUTETYPE $KDIRGETDNODEACCESSCONTROLPARSE
  4224.           $KDIRGETATTRIBUTEACCESSCONTROLGET $KDIRGETRECORDACCESSCONTROLGET
  4225.           $KDIRGETDNODEACCESSCONTROLGET $KDIRGETOCESETUPREFNUM
  4226.           $KDIRINSTANTIATEDSAM $KDIRFINDVALUE $KDIRGETDNODEINFO
  4227.           $KDIRGETLOCALNETWORKSPEC $KDIRMAPDNODENUMBERTOPATHNAME
  4228.           $KDIRMAPPATHNAMETODNODENUMBER $KDIRGETDIRECTORYICON $KDIRREMOVEDSAM
  4229.           $KDIRCREATEPERSONALDIRECTORY $KDIROPENPERSONALDIRECTORY $KDIRADDDSAM
  4230.           $KDIRADDALIAS $KDIRABORT $KDIRENUMERATEDIRECTORIESGET
  4231.           $KDIRGETDIRECTORYINFO $KDIRGETDNODEMETAINFO $KDIRLOOKUPGET
  4232.           $KDIRGETRECORDMETAINFO $KDIRSETNAMEANDTYPE $KDIRGETNAMEANDTYPE
  4233.           $KDIRENUMERATEPSEUDONYMGET $KDIRENUMERATEATTRIBUTETYPESGET
  4234.           $KDIRENUMERATEGET $KDIRDELETEPSEUDONYM $KDIRADDPSEUDONYM
  4235.           $KDIRVERIFYATTRIBUTEVALUE $KDIRCHANGEATTRIBUTEVALUE
  4236.           $KDIRDELETEATTRIBUTEVALUE $KDIRADDATTRIBUTEVALUE $KDIRDELETERECORD
  4237.           $KDIRADDRECORD $KDIRNETSEARCHADAPDIRECTORIESGET
  4238.           $KDIRFINDADAPDIRECTORYBYNETSEARCH $KDIRENUMERATEDIRECTORIESPARSE
  4239.           $KDIRNETSEARCHADAPDIRECTORIESPARSE $KDIRENUMERATEPSEUDONYMPARSE
  4240.           $KDIRENUMERATEATTRIBUTETYPESPARSE $KDIRLOOKUPPARSE
  4241.           $KDIRENUMERATEPARSE $KOCESETUPCHANGEDIRECTORYINFO $KAUTHGETUTCTIME
  4242.           $KOCESETUPADDDIRECTORYINFO $KAUTHREMOVELOCALIDENTITY
  4243.           $KAUTHCHANGELOCALIDENTITY $KAUTHSETUPLOCALIDENTITY
  4244.           $KAUTHLOCKLOCALIDENTITY $KAUTHUNLOCKLOCALIDENTITY
  4245.           $KAUTHTRADEPROXYFORCREDENTIALS $KAUTHMAKEPROXY $KAUTHVERIFYREPLY
  4246.           $KAUTHMAKEREPLY $KAUTHMAKECHALLENGE $KOCESETUPGETDIRECTORYINFO
  4247.           $KOCESETUPREMOVEDIRECTORYINFO $KAUTHDECRYPTCREDENTIALS
  4248.           $KAUTHGETCREDENTIALS $KAUTHPASSWORDTOKEY $KAUTHDELETEKEY
  4249.           $KAUTHCHANGEKEY $KAUTHADDKEY $KAUTHREMOVEFROMLOCALIDENTITYQUEUE
  4250.           $KAUTHADDTOLOCALIDENTITYQUEUE $KAUTHGETLOCALIDENTITY
  4251.           $KAUTHGETSPECIFICIDENTITYINFO $KAUTHRESOLVECREATIONID
  4252.           $KAUTHUNBINDSPECIFICIDENTITY $KAUTHBINDSPECIFICIDENTITY
  4253.           $KRECORDFILETYPE $KDIRSROOTFILETYPE $KDNODEFILETYPE
  4254.           $KDIRECTORYFILETYPE $KBUSINESSCARDFILETYPE
  4255.           $KPERSONALDIRECTORYFILETYPE $KPERSONALDIRECTORYFILECREATOR
  4256.           $KNOTIFYNAMECHANGEMASK $KNOTIFYUNLOCKMASK $KNOTIFYLOCKMASK
  4257.           $KNOTIFYNAMECHANGEBIT $KNOTIFYUNLOCKBIT $KNOTIFYLOCKBIT
  4258.           $KAUTHLOCKWILLBEDONE $KAUTHLOCKPENDING
  4259.           $KAUTHLOCALIDENTITYNAMECHANGEOP $KAUTHUNLOCKLOCALIDENTITYOP
  4260.           $KAUTHLOCKLOCALIDENTITYOP $KSUPPORTSFINDRECORDMASK
  4261.           $KSUPPORTSPROXIESMASK $KSUPPORTSAUTHENTICATIONMASK
  4262.           $KSUPPORTSPARTIALPATHNAMESMASK $KSUPPORTSPSEUDONYMSMASK
  4263.           $KSUPPORTSALIASESMASK $KSUPPORTSENUMERATEPSEUDONYMCONTINUEMASK
  4264.           $KSUPPORTSENUMERATEATTRIBUTETYPECONTINUEMASK
  4265.           $KSUPPORTSLOOKUPCONTINUEMASK $KSUPPORTSENUMERATIONCONTINUEMASK
  4266.           $KSUPPORTINDEXRATIOMASK $KSUPPORTSORTBACKWARDSMASK
  4267.           $KCANSUPPORTTYPEORDERMASK $KCANSUPPORTNAMEORDERMASK
  4268.           $KSUPPORTSORDEREDENUMERATIONMASK $KSUPPORTSCONTAINSMASK
  4269.           $KSUPPORTSENDSWITHMASK $KSUPPORTSEXACTMATCHMASK
  4270.           $KSUPPORTSBEGINSWITHMASK $KSUPPORTSMATCHALLMASK
  4271.           $KSUPPORTSATTRIBUTECREATIONIDMASK $KSUPPORTSRECORDCREATIONIDMASK
  4272.           $KSUPPORTSDNODENUMBERMASK $KSUPPORTSFINDRECORDBIT
  4273.           $KSUPPORTSPROXIESBIT $KSUPPORTSAUTHENTICATIONBIT
  4274.           $KSUPPORTSPARTIALPATHNAMESBIT $KSUPPORTSPSEUDONYMSBIT
  4275.           $KSUPPORTSALIASESBIT $KSUPPORTSENUMERATEPSEUDONYMCONTINUEBIT
  4276.           $KSUPPORTSENUMERATEATTRIBUTETYPECONTINUEBIT
  4277.           $KSUPPORTSLOOKUPCONTINUEBIT $KSUPPORTSENUMERATIONCONTINUEBIT
  4278.           $KSUPPORTINDEXRATIOBIT $KSUPPORTSORTBACKWARDSBIT
  4279.           $KCANSUPPORTTYPEORDERBIT $KCANSUPPORTNAMEORDERBIT
  4280.           $KSUPPORTSORDEREDENUMERATIONBIT $KSUPPORTSCONTAINSBIT
  4281.           $KSUPPORTSENDSWITHBIT $KSUPPORTSEXACTMATCHBIT $KSUPPORTSBEGINSWITHBIT
  4282.           $KSUPPORTSMATCHALLBIT $KSUPPORTSATTRIBUTECREATIONIDBIT
  4283.           $KSUPPORTSRECORDCREATIONIDBIT $KSUPPORTSDNODENUMBERBIT $KNOPRIVS
  4284.           $KALLPRIVS $KSEEFOLDERSMASK $KCHANGEPRIVSMASK $KRENAMEMASK
  4285.           $KCHANGEMASK $KDELETEMASK $KADDMASK $KSEEMASK $KSEEFOLDERSBIT
  4286.           $KCHANGEPRIVSBIT $KRENAMEBIT $KCHANGEBIT $KDELETEBIT $KADDBIT
  4287.           $KSEEBIT $KMEMASK $KGUESTMASK $KAUTHENTICATEDINDIRECTORYMASK
  4288.           $KAUTHENTICATEDINDNODEMASK $KFRIENDSMASK $KTHISRECORDOWNERMASK
  4289.           $KMEBIT $KGUESTBIT $KAUTHENTICATEDINDIRECTORYBIT
  4290.           $KAUTHENTICATEDINDNODEBIT $KFRIENDSBIT $KTHISRECORDOWNERBIT
  4291.           $KCURRENTOCESORTVERSION $KCONTAINING $KENDINGWITH $KBEGINSWITH
  4292.           $KEXACTMATCH $KMATCHALL $KSORTBACKWARDS $KSORTFORWARDS $KSORTBYTYPE
  4293.           $KSORTBYNAME $KENUMALLMASK $KENUMINVISIBLEMASK $KENUMDNODEMASK
  4294.           $KENUMPSEUDONYMMASK $KENUMALIASMASK $KENUMDISTINGUISHEDNAMEMASK
  4295.           $KENUMINVISIBLEBIT $KENUMDNODEBIT $KENUMPSEUDONYMBIT $KENUMALIASBIT
  4296.           $KENUMDISTINGUISHEDNAMEBIT $KREFNUMUNKNOWN $KRC4KEYSIZEINBYTES))
  4297. (provide-interface 'OCEAuthDir)
  4298.